]> git.sven.stormbind.net Git - sven/scripts.git/blobdiff - stormbind/hetznerbackup.sh
move historic hetzner backup scripts
[sven/scripts.git] / stormbind / hetznerbackup.sh
diff --git a/stormbind/hetznerbackup.sh b/stormbind/hetznerbackup.sh
new file mode 100755 (executable)
index 0000000..e7bae64
--- /dev/null
@@ -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