Skip to content

Instantly share code, notes, and snippets.

@cm6051
Last active September 30, 2016 20:56
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cm6051/a7a67c30b2ef3f52f8c5 to your computer and use it in GitHub Desktop.
Save cm6051/a7a67c30b2ef3f52f8c5 to your computer and use it in GitHub Desktop.
Backup script using Attic
#!/bin/bash
set -e
MYSQL_DIR=/var/backups/mysql
ATTIC_DIR=/var/backups/attic
BACKUP_NAME=tip1.attic
BACKUP_SOURCES="/etc /home /usr/share/nginx ${MYSQL_DIR}"
REMOTE_DEST="backuptip1@scout.yoyo.org"
echo "================="
echo "Making Innobackup"
echo "================="
[ -x ${MYSQL_DIR} ] || mkdir -p ${MYSQL_DIR}
innobackupex ${MYSQL_DIR} \
&& ls -dt1 /var/backups/mysql/* | tail -n +3 | xargs rm -r
echo "==================="
echo "Making Attic backup"
echo "==================="
[ -x ${ATTIC_DIR} ] \
|| mkdir -p ${ATTIC_DIR}
[ -x ${ATTIC_DIR}/${BACKUP_NAME} ] \
|| attic init ${ATTIC_DIR}/${BACKUP_NAME}
attic create --stats ${ATTIC_DIR}/${BACKUP_NAME}::$(date "+%Y-%m-%dT%H:%M") ${BACKUP_SOURCES}
echo "========================="
echo "Pruning old local backups"
echo "========================="
attic prune --verbose ${ATTIC_DIR}/${BACKUP_NAME} --keep-hourly=12 --keep-daily=7 --keep-weekly=4 --keep-monthly=-1
echo "==========================="
echo "Checking local Attic backup"
echo "==========================="
attic check --verbose ${ATTIC_DIR}/${BACKUP_NAME}
echo "===================================="
echo "Rsyncing Attic backup to remote host"
echo "===================================="
rsync -az --stats --delete ${ATTIC_DIR}/${BACKUP_NAME} ${REMOTE_DEST}:
echo "=========================="
echo "Pruning old remote backups"
echo "=========================="
ssh ${REMOTE_DEST} attic prune --verbose ${BACKUP_NAME} --keep-hourly=12 --keep-daily=7 --keep-weekly=4 --keep-monthly=-1
echo "============================"
echo "Checking remote Attic backup"
echo "============================"
ssh ${REMOTE_DEST} attic check --verbose ${BACKUP_NAME}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment