Guest User

Untitled

a guest
Dec 16th, 2017
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #!/bin/bash
  2. # This bash script exports all mysql databases and archives it with all webserver files.
  3. # Created archive will be encrypted with gpg key.
  4. # After sending to cloud storage all created files will be deleted
  5. # This script uses: tar, gpg, mysql and aws3 s3
  6. # ** IMPORTANT** :
  7. # ** You need to have generated gpg key !!! Otherwise comment encryption part.
  8. # ** Execute this script with proper rights. It means that if in webserver dir
  9. # you have files with permisions only for root user, then use sudo.
  10.  
  11. # CRONTAB example. Backup daily at 04:00 AM
  12. # 0 4 * * * /usr/local/bin/backup.sh >/dev/null 2>&1
  13.  
  14. # DATA
  15. DB_USER="ENTER_VALUE"
  16. DB_PASSWORD="ENTER_VALUE"
  17. ENCRYPTION_RECIPIENT="you@gpg-key.com"
  18.  
  19. # PATH'S
  20. BUCKET="ENTER_VALUE" #name of the bucket without s3://
  21. OUTPUT_PATH="/srv/backup"
  22. TEMP_PATH="$OUTPUT_PATH/temp" #where to store data temporary before archiving and encrypting
  23. WWW_PATH="/srv/www"
  24.  
  25. # OTHER DATA
  26. DATE=`date +%Y-%m-%d`
  27. LOG_DATE=`date +[%Y-%m-%d:%H:%M:%S]`
  28.  
  29. # CREATE directories if not exist
  30. mkdir -p "$TEMP_PATH"
  31.  
  32. # GET database table names
  33. databases=`mysql --user=$DB_USER --password=$DB_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
  34.  
  35. echo "$LOG_DATE DUMPING DATABASE TABLES"
  36. for db in $databases; do
  37. # Ignore default phpmyadmin tables
  38. if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != mysql* ]] && [[ "$db" != "performance_schema" ]] ; then
  39. name=$TEMP_PATH/$DATE-$db
  40. echo "$LOG_DATE Dumped: $name"
  41. mysqldump --force --opt --user=$DB_USER --password=$DB_PASSWORD --databases $db > $name.sql
  42. fi
  43. done
  44. echo "$LOG_DATE DONE!"
  45.  
  46. # COMPRESS AND ARCHIVE dumped sql's and webserver directories
  47. echo "$LOG_DATE Archieving data"
  48. tar -czf $OUTPUT_PATH/$DATE-webserver.tar.gz -C $TEMP_PATH . -C $WWW_PATH .
  49. echo "$LOG_DATE DONE!"
  50.  
  51. # ENCRYPT the Archive
  52.  
  53. echo "$LOG_DATE ENCRYPTING WEBSERVER"
  54. /usr/bin/gpg --yes -e -a -r "$ENCRYPTION_RECIPIENT" $OUTPUT_PATH/$DATE-webserver.tar.gz
  55. echo "$LOG_DATE DONE!"
  56.  
  57. # SEND to bucket
  58. aws s3 cp $OUTPUT_PATH/$DATE-webserver.tar.gz.asc s3://$BUCKET
  59.  
  60. # REMOVE old backup data on the Webserver due tu security
  61. rm -f $TEMP_PATH/*.sql > /dev/null 2>&1
  62. rm -f $OUTPUT_PATH/*.tar.gz > /dev/null 2>&1
  63. rm -f $OUTPUT_PATH/*.tar.gz.asc > /dev/null 2>&1
Add Comment
Please, Sign In to add comment