Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Variables
- export BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S);
- export BACKUP_PATH='/home/foo/server-backup';
- export LOG_PATH="${BACKUP_PATH}/log";
- export SUMMARY=${BACKUP_PATH}/summary.log;
- export SSH_USER='user';
- export SSH_HOST='host';
- export SSH_PORT='22';
- export RSYNC_REMOTE_DIR='public_html/';
- export RSYNC_LOCAL_DIR="${BACKUP_PATH}/${RSYNC_REMOTE_DIR}";
- export MYSQL_HOST='host';
- export MYSQL_USER='user';
- export MYSQL_PASS='pass';
- export EXPIRY_DAYS=90;
- export TIME='/usr/bin/time -f "%E"';
- export RSYNC='/usr/bin/rsync';
- export MYSQLDUMP='/usr/bin/mysqldump';
- export RSYNC_OPTS=(-avz -e ssh --port "${SSH_PORT}");
- export MYSQLDUMP_OPTS=(--all-databases -C --opt "-h${MYSQL_HOST}" "-u${MYSQL_USER}" "-p${MYSQL_PASS}");
- export RSYNC_TIME='FAILED!';
- export MYSQLDUMP_TIME='FAILED!';
- 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");
- 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");
- export RSYNC_TIME_CMD=(${TIME} "'" "${RSYNC_CMD[@]}" "'");
- export MYSQLDUMP_TIME_CMD=("${TIME}" "-f" "\"%E\"" "${MYSQLDUMNP_CMD[@]}");
- export RSYNC_TIME = "${RSYNC_TIME_CMD[@]}";
- export MYSQLDUMP_TIME = "${MYSQLDUMP_TIME_CMD[@]}";
- # Delete logs and backups older than 3 months
- find ${BACKUP_PATH}/log ${BACKUP_PATH}/mysql -type f -mtime +${EXPIRY_DAYS} -exec rm '{}' \; >${BACKUP_PATH}/log/${BACKUP_DATE}-delete_expired.log 2>&1
- # Run Backup Summary
- 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
- if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-public_html.err ]; then
- echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
- cat ${BACKUP_PATH}/log/${BACKUP_DATE}-public_html.err >> $SUMMARY
- echo -e "***********************" >> $SUMMARY
- fi
- echo -e "\nmysqldump completed in: ${MYSQLDUMP_TIME}\nIf any errors occurred, they are listed here:\n" > $SUMMARY
- if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-mysqldump.err ]; then
- echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
- cat ${BACKUP_PATH}/log/${BACKUP_DATE}-mysqldump.err >> $SUMMARY
- echo -e "***********************" >> $SUMMARY
- fi
- if [ -s ${BACKUP_PATH}/log/${BACKUP_DATE}-gzip.err ]; then
- echo -e "*** ERRORS OCCURRED ***" >> $SUMMARY
- cat ${BACKUP_PATH}/log/${BACKUP_DATE}-gzip.err
- echo -e "***********************" >> $SUMMARY
- fi
- echo $SUMMARY | mail -s "Backup Report Summary" foo@bar.com
Add Comment
Please, Sign In to add comment