X-Git-Url: https://git.sven.stormbind.net/?p=sven%2Fscripts.git;a=blobdiff_plain;f=stormbind%2Fhetznerbackup.sh;fp=stormbind%2Fhetznerbackup.sh;h=e7bae64cb0198542e2120fcc0a2615ecdf03fec3;hp=0000000000000000000000000000000000000000;hb=2cf03307fed0f8e3bb9adde634361751be051bc7;hpb=e7572966b7566278c295b282f5d75a59713b80e8 diff --git a/stormbind/hetznerbackup.sh b/stormbind/hetznerbackup.sh new file mode 100755 index 0000000..e7bae64 --- /dev/null +++ b/stormbind/hetznerbackup.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +### Halt on errors +set -e + +### Debug +#set -x + +### General settings +export PASSPHRASE=s +export FTP_PASSWORD=s +FTP_USER=u +FTP_HOST=h +LOCKFILE="/var/lock/backup/hetznerbackup" + +## Backup job for the dom0 main +job_main() { + echo "Backing up main/etc" + duplicity $BMODE /etc ftp://$FTP_USER@$FTP_HOST/main/etc + duplicity remove-all-but-n-full 5 --force ftp://$FTP_USER@$FTP_HOST/main/etc +} + +### Backup job for the domU void +job_void() { + ### mount all domU partitions + mount -o ro /dev/vg0/void-root /mnt/backup/void-root + mount -o ro /dev/vg0/void-home /mnt/backup/void-home + mount -o ro /dev/vg0/void-var /mnt/backup/void-var + + if [ -e /mnt/backup/void-var/lib/automysqlbackup/backupdone ]; then + MYSQLOK="--include /mnt/backup/void-var/lib/automysqlbackup/backupdone" + else + echo "WARNING: It seems that the last mysql backup in the domU void is still runing" + echo "Skipping mysql backup - please re-schedule" + fi + + echo "Backing up void" + duplicity $BMODE \ + --exclude /mnt/backup/void-home/tcm \ + --include /mnt/backup/void-root/etc \ + --include /mnt/backup/void-home \ + $MYSQLOK \ + --exclude /mnt/backup \ + /mnt/backup ftp://$FTP_USER@$FTP_HOST/void/ + duplicity remove-all-but-n-full 5 --force ftp://$FTP_USER@$FTP_HOST/void/ + + + ### umount all domU partitions + umount /mnt/backup/void-root /mnt/backup/void-home /mnt/backup/void-var +} + +### check for other runing instances of this script +if [ -e $LOCKFILE ]; then + echo "Lockfile $LOCKFILE found - aborting" + echo "This is a typical result of a failed backup run, please contact your admin" + exit 5 +else + touch $LOCKFILE +fi + +### Set the duplicity backup mode we would like to use +if [[ $(LANG=C; date +%A) =~ Sunday ]]; then + echo "Runing in full mode" + BMODE="full" +else + echo "Runing in incr mode" + BMODE="incr" +fi + +### Start the backup jobs +job_main +job_void + +### remove the lockfile +rm $LOCKFILE