--- /dev/null
+#!/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