Skip to content

Instantly share code, notes, and snippets.

@hanazuki
Created September 9, 2014 15:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hanazuki/3e449b999d5e90341ef5 to your computer and use it in GitHub Desktop.
Save hanazuki/3e449b999d5e90341ef5 to your computer and use it in GitHub Desktop.
#!/bin/bash -ex
BACKUP_DIR=/backup
REMOTE_BUCKET=s3://$(hostname -s).backup.$(hostname -d)
umask 077
for mode in "$@"; do
dir="$BACKUP_DIR/$mode"
rm -rf "$dir/" || true
mkdir -p "$dir" && cd $dir
case "$mode" in
mysql)
mysqldump --defaults-file=/root/backup.my.cnf --master-data=2 --all-databases | bzip2 > all-databases.sql.bz2
mysqldump --defaults-file=/root/backup.my.cnf --master-data=2 mysql | bzip2 > mysql.sql.bz2
;;
sys-conf)
tar -acPf etc.tar.bz2 /etc
tar -acPf cron.tar.bz2 /var/spool/cron
;;
home)
find /home -maxdepth 1 -mindepth 1 -type d -print0 | while read -r -d $'\0' user; do
tar --one-file-system -acPf "$(basename "$user").tar.bz2" "$user"
done
;;
*)
echo "Unknown backup mode $mode" >&2
exit 1
;;
esac
s3cmd sync --rr "$dir/" "$REMOTE_BUCKET/$mode/"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment