Advertisement
Guest User

Untitled

a guest
Sep 12th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #!/bin/bash
  2. # Execute it as root, due to archiving permision conflicts
  3. #CRONTAB entry for every day at 04:00 AM
  4. #0 4 * * * /usr/local/bin/webserver-backup.sh >/dev/null 2>&1
  5.  
  6. # DATABSE DATA
  7. DB_USER="XXX"
  8. DB_PASSWORD="XXX"
  9.  
  10. # PATH'S
  11. OUTPUT_PATH="/srv/backup"
  12. WWW_PATH="/srv/webserver"
  13. TEMP_PATH="/srv/backup/temp" #where to store data temporary before archiving and encrypting
  14.  
  15. # FTP DATA (where to save backup)
  16. FTP_LOGIN="XXX"
  17. FTP_PASS="XXX"
  18. REMOTE_PATH="BACKUPS/WEBSERVER/"
  19. REMOTE_HOST="77.23.XXZ.XX"
  20. PORT="21"
  21.  
  22. # OTHER CONSTS
  23. DATE=`date +%Y-%m-%d`
  24. LOG_DATE=`date +[%Y-%m-%d:%H:%M:%S]`
  25.  
  26. # create directory if not exist
  27. mkdir -p "$TEMP_PATH"
  28.  
  29. # remove old backup data at webserver in case error occurred during upload.
  30. rm -f $TEMP_PATH/*.sql > /dev/null 2>&1
  31. rm -f $OUTPUT_PATH/*.tar.gz > /dev/null 2>&1
  32. rm -f $OUTPUT_PATH/*.tar.gz.asc > /dev/null 2>&1
  33.  
  34. # get database table names
  35. databases=`mysql --user=$DB_USER --password=$DB_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
  36.  
  37. echo "$LOG_DATE DUMPING DATABASE TABLES"
  38. for db in $databases; do
  39. # Ignore default phpmyadmin tables
  40. if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != mysql* ]] && [[ "$db" != "performance_schema" ]] ; then
  41. name=$TEMP_PATH/$DATE-$db
  42. echo "$LOG_DATE Dumped: $name"
  43. mysqldump --force --opt --user=$DB_USER --password=$DB_PASSWORD --databases $db > $name.sql
  44. fi
  45. done
  46. echo "$LOG_DATE DONE!"
  47.  
  48.  
  49. # arhive dumped sql's and webserver directories
  50. echo "$LOG_DATE Archieving data"
  51. tar -czf $OUTPUT_PATH/$DATE-webserver.tar.gz -C $TEMP_PATH . -C $WWW_PATH .
  52. echo "$LOG_DATE DONE!"
  53.  
  54. # ENCRYPT archive
  55. # gpg -e -u "Sender User Name" -r "Receiver User Name" somefile
  56. # --yes auto overwrite
  57. echo "$LOG_DATE ENCRYPTING WEBSERVER"
  58. /usr/bin/gpg --yes -e -a -r "mindaugas" $OUTPUT_PATH/$DATE-webserver.tar.gz
  59. # remove archived after encryption
  60. rm -f $OUTPUT_PATH/*.tar.gz > /dev/null 2>&1
  61. echo "$LOG_DATE DONE!"
  62.  
  63.  
  64. echo "$LOG_DATE UPLOADING TO REMOTE FTP"
  65. sudo curl -T $OUTPUT_PATH/$DATE-webserver.tar.gz.asc ftp://$REMOTE_HOST:$PORT/$REMOTE_PATH/ --user $FTP_LOGIN:$FTP_PASS
  66. echo "$LOG_DATE DONE!"
  67.  
  68.  
  69. # CHECK IF BACKUP EXIST IN REMOTE FTP
  70. if curl $OUTPUT_PATH/$DATE-webserver.tar.gz.asc ftp://$REMOTE_HOST:$PORT/$REMOTE_PATH/ -s | grep $DATE-webserver.tar.gz.asc; then
  71. echo "$LOG_DATE ENCRYPTED ARCHIVE SUCCESFULLY UPLOADED!"
  72. echo "$LOG_DATE DELETING TEMP DATA"
  73. rm -f $TEMP_PATH/*.sql > /dev/null 2>&1
  74. rm -f $OUTPUT_PATH/*.tar.gz > /dev/null 2>&1
  75. rm -f $OUTPUT_PATH/*.tar.gz.asc > /dev/null 2>&1
  76. echo "$LOG_DATE DONE!"cronmt
  77. echo "$LOG_DATE DO WEBSERVER BACKUP SUCCESS!" | /usr/local/bin/slackpost.sh
  78. else
  79. echo "$LOG_DATE [ERROR] NO BACKUP WAS FOUND AFTER UPLOAD!" | /usr/local/bin/slackpost.sh
  80. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement