### MySQL ### ## Handy gist - https://gist.github.com/hofmannsven/9164408 ## # dump DB $ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql] # dump DB and gzip $ mysqldump --opt -u [uname] -p[pass] [dbname] | gzip > [dbname]-$(date +%Y%m%d-%H%M%S).sql.gz # import DB dump $ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql] # import gzipped DB dump $ gunzip < [dump].sql.gz | mysql -u [uname] -p[pass] # import DB dumped to signel WP files per table $ for sql in *.sql; do mysql -u [unape] -p[pass] [db_to_restore] <$sql; done # import multiple SQL dumps in single run $ cat *.sql | mysql -u [user] -p [db_to_restore] # access mysql shell $ mysql -u [user] -p # show all databases > show databases; # create new database > create database [database]; # select database > use [database]; # Determine what database is in use > select database(); # show all tables > show tables; # show table structure > describe [table]; # inserting a record > INSERT INTO [table] ([column], [column]) VALUES ('[value]', [value]'); # grant ALL access to user for * tables > GRANT ALL ON database.* TO 'user'@'localhost'; # updating records > UPDATE [table] SET [column] = '[updated-value]' WHERE [column] = [value]; ### Search ### # List and delete .svn directories find . -name .svn -exec echo '{}' \; find . -name .svn -exec rm -rf '{}' \; # Find recursively in current directory # 1) .JS and .CSS files # 2) modified in less than 1 minute # 3) not in paths that contains /cache/, /backupbuddy_, /plugins/ and /headway/ find . -type f -mmin -1 \( -name "*.js" -or -name "*.css" \) -not \( -path "*/cache/*" -or -path "*/backupbuddy_*/*" -or -path "*/plugins/*" -or -path "*/headway/*" \) # Find all default WP themes $ find /home -type d -wholename '*/wp-content/themes/*' | grep -v 'cache' | egrep '\/wp-\content\/themes\/(default|twenty)' | egrep '(ten|teen|elewen|twelve|default)$' # Find all W3TotalCache exception errors $ grep 'BrowserCache.php on line 191' /usr/local/apache/logs/error_log | grep '/home/' | sed 's/^\[.*\ in\ //' | sed 's/on\ line\ 191.*//' | sort | uniq | less ### Archiving ### # Pack to TAR from file list $ tar -cvf archive.tar -T filelist.txt # List content of TAR.GZ w/o extracting archive $ tar -tf file.tar.gz # Extract content of TAR.GZ archive $ tar -zxvf file.tar.gz ### Permissions ### # Chown recursively $ chown -R username. * # Calculate size of currend directory $ du -chs # Get working folder name $ echo ${PWD##*/} # Set proper permissions in public_html $ find $PWD -type d -exec chmod 755 {} \; $ find $PWD -type f -exec chmod 644 {} \; # Get username of any directory in /home on regular web server if [[ "$PWD" == "/home/"* ]]; then USERNAME=$( pwd | cut -d "/" -f3 ) fi ### Scripting ### # Prepend "some text" as 1st line to file - sed insert sed -i '1s/^/some text\n/' FILE_NAME.ext # Get current BASH script directory path SCRIPT_DIR_PATH=$( dirname $0 ) # Check does file contain "some text" exact string in whole line if ! grep -Fxq 'some text' FILE_NAME.ext then echo "file does not contain string" else echo "file contains string" fi ### Debugging ### # Compare two folders but exclude specific path $ diff --exclude=directory/to/exclude -r dir1 dir2 # Compare files in two directories and print only file paths that differ diff -qr dir1 dir2 # Compare files in two directories and print only file path that is same diff -rs dir1 dir2 | egrep '^Files .+ and .+ are identical$'