-#!/bin/bash
-
-### Do not inherit the following variables
-# Safety net just in case some calls this
-# script in a bogus way.
-unset $dry
-
-### Debug
-#set -x
-#set dry="--dry-run"
-
-### General settings
-export PASSPHRASE=s
-export FTP_PASSWORD=s
-FTP_USER=uxxx
-FTP_HOST=uxxx.your-backup.de
-PROTO=ssh
-GOPTS="--num-retries 15"
-ROOTMAIL="root@localhost"
-LOCKDIR="/var/lock/backup"
-LOCKFILE="$LOCKDIR/hetznerbackup"
-LOGFILE="/var/log/hetznerbackup.log"
-SESSIONLOG=$(mktemp /var/tmp/hetznerbackup.XXXXXXXXX)
-ERRSTAT=0
-
-## Backup job for main
-job_main() {
- echo "" >> $SESSIONLOG
- echo "Backing up main `date`" >> $SESSIONLOG
- echo "" >> $SESSIONLOG
-
- echo "Going for /etc" >> $SESSIONLOG
- duplicity $BMODE $dry $GOPTS /etc $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity remove-all-but-n-full 5 --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity cleanup --extra-clean --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
-
- echo "Going for /home" >> $SESSIONLOG
- duplicity $BMODE $dry $GOPTS /home $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity remove-all-but-n-full 5 --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity cleanup --extra-clean --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1 || ERRSTAT=1
-
- echo "Going for /var/www" >> $SESSIONLOG
- duplicity $BMODE $dry $GOPTS /var/www $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity remove-all-but-n-full 5 --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity cleanup --extra-clean --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1 || ERRSTAT=1
-
- echo "Going for /var/lib/tomcat6" >> $SESSIONLOG
- duplicity $BMODE $dry $GOPTS /var/lib/tomcat6 $PROTO://$FTP_USER@$FTP_HOST/main/tomcat6 >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity remove-all-but-n-full 5 --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/tomcat6 >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity cleanup --extra-clean --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/tomcat6 >> $SESSIONLOG 2>&1 || ERRSTAT=1
-
- echo "Going for /var/lib/automysqlbackup" >> $SESSIONLOG
- if [ -e /var/lib/automysqlbackup/backupdone ]; then
- duplicity $BMODE $dry $GOPTS /var/lib/automysqlbackup $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity remove-all-but-n-full 5 --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup >> $SESSIONLOG 2>&1 || ERRSTAT=1
- duplicity cleanup --extra-clean --force $dry $GOPTS $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup >> $SESSIONLOG 2>&1 || ERRSTAT=1
- else
- echo "WARNING: It seems that the last mysql backup is still runing" >> $SESSIONLOG
- echo "Skipping mysql backup - please re-schedule" >> $SESSIONLOG
- ERSSTAT=10
- fi
-
- echo "" >> $SESSIONLOG
-}
-
-# Append the session log to the main logfile and remove log and lock
-cleanup() {
- ENDDATE=$(date)
- if [ $ERRSTAT -eq 0 ]; then
- echo "Backup finished successfully $ENDDATE" >> $SESSIONLOG
- else
- echo "ERROR Backup FAILED $ENDDATE with ERRSTAT $ERRSTAT" >> $SESSIONLOG
- cat $SESSIONLOG|mail -s "ERROR Backup FAILED $ENDDATE with ERRSTAT $ERRSTAT" $ROOTMAIL
- fi
- cat $SESSIONLOG >> $LOGFILE
- rm $SESSIONLOG $LOCKFILE
-}
-
-### 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
- if [ ! -d $LOCKDIR ]; then
- mkdir -m 700 $LOCKDIR
- fi
- 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" >> $SESSIONLOG
- BMODE="full"
-else
- echo "Runing in incr mode" >> $SESSIONLOG
- BMODE="incr"
-fi
-
-### Start the backup jobs
-job_main
-### Cleanup and reporting
-cleanup
-exit $ERRSTAT