Guest User

Untitled

a guest
Jun 27th, 2018
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.67 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Variables
  4. export BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S);
  5. export BACKUP_PATH='/home/foo/server-backup';
  6. export LOG_PATH="${BACKUP_PATH}/log";
  7. export SUMMARY=${BACKUP_PATH}/summary.log;
  8.  
  9. export SSH_USER='user';
  10. export SSH_HOST='host';
  11. export SSH_PORT='22';
  12.  
  13. export RSYNC_REMOTE_DIR='public_html/';
  14. export RSYNC_LOCAL_DIR="${BACKUP_PATH}/${RSYNC_REMOTE_DIR}";
  15.  
  16. export MYSQL_HOST='host';
  17. export MYSQL_USER='user';
  18. export MYSQL_PASS='pass';
  19.  
  20. export EXPIRY_DAYS=90;
  21.  
  22. export TIME='/usr/bin/time -f "%E"';
  23. export RSYNC='/usr/bin/rsync';
  24. export MYSQLDUMP='/usr/bin/mysqldump';
  25.  
  26. export RSYNC_OPTS=(-avz -e ssh --port "${SSH_PORT}");
  27. export MYSQLDUMP_OPTS=(--all-databases -C --opt "-h${MYSQL_HOST}" "-u${MYSQL_USER}" "-p${MYSQL_PASS}");
  28.  
  29. export RSYNC_TIME='FAILED!';
  30. export MYSQLDUMP_TIME='FAILED!';
  31.  
  32. export RSYNC_CMD=("${RSYNC}" "${RSYNC_OPTS[@]}" "${SSH_USER}@${SSH_HOST}:${RSYNC_REMOTE_DIR}" "${RSYNC_LOCAL_DIR}" "1>${LOG_PATH}/${BACKUP_DATE}-public_html.log" "2>${LOG_PATH}/${BACKUP_DATE}-public_html.err");
  33. export MYSQLDUMP_CMD=("${MYSQLDUMP}" "${MYSQL_OPTS[@]}" "2>${LOG_PATH}/${BACKUP_DATE}-mysqldump.err" '|' 'gzip' '-9' '>' "${BACKUP_PATH}/mysql/${BACKUP_DATE}.sql.gz" "2>${LOG_PATH}/${BACKUP_DATE}-gzip.err");
  34.  
  35. export RSYNC_TIME_CMD=(${TIME} "'" "${RSYNC_CMD[@]}" "'");
  36. export MYSQLDUMP_TIME_CMD=("${TIME}" "-f" "\"%E\"" "${MYSQLDUMNP_CMD[@]}");
  37.  
  38. export RSYNC_TIME = "${RSYNC_TIME_CMD[@]}";
  39. export MYSQLDUMP_TIME = "${MYSQLDUMP_TIME_CMD[@]}";
  40.  
  41. # Delete logs and backups older than 3 months
  42. find ${BACKUP_PATH}/log ${BACKUP_PATH}/mysql -type f -mtime +${EXPIRY_DAYS} -exec rm '{}' \; >${BACKUP_PATH}/log/${BACKUP_DATE}-delete_expired.log 2>&1
  43.  
  44. # Run Backup Summary
  45. echo -e "Backup Completed for ${BACKUP_DATE}\n\npublic_html rsync completed in: ${RSYNC_TIME}\nIf any errors occurred, they are listed here:\n" > $SUMMARY
  46. if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-public_html.err ]; then
  47.   echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
  48.   cat ${BACKUP_PATH}/log/${BACKUP_DATE}-public_html.err >> $SUMMARY
  49.   echo -e "***********************" >> $SUMMARY
  50. fi
  51. echo -e "\nmysqldump completed in: ${MYSQLDUMP_TIME}\nIf any errors occurred, they are listed here:\n" > $SUMMARY
  52. if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-mysqldump.err ]; then
  53.   echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
  54.   cat ${BACKUP_PATH}/log/${BACKUP_DATE}-mysqldump.err >> $SUMMARY
  55.   echo -e "***********************" >> $SUMMARY
  56. fi
  57. if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-gzip.err ]; then
  58.   echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
  59.   cat ${BACKUP_PATH}/log/${BACKUP_DATE}-gzip.err
  60.   echo -e "***********************" >> $SUMMARY
  61. fi
  62.  
  63. echo $SUMMARY | mail -s "Backup Report Summary" foo@bar.com
Add Comment
Please, Sign In to add comment