]> git.sven.stormbind.net Git - sven/scripts.git/blobdiff - hetzner/hetznerbackupv2.sh
add a more aggressive cleanup for duplicity to avoid local and remote cache growth
[sven/scripts.git] / hetzner / hetznerbackupv2.sh
index 7f07a0461eb17f6cc51bfecbd5979eae80b6d05d..2ceb473d2e88c89cf28d57691db6030a5a63db58 100755 (executable)
@@ -16,7 +16,8 @@ FTP_USER=uxxx
 FTP_HOST=uxxx.your-backup.de
 PROTO=ssh
 ROOTMAIL="root@localhost"
-LOCKFILE="/var/lock/backup/hetznerbackup"
+LOCKDIR="/var/lock/backup"
+LOCKFILE="$LOCKDIR/hetznerbackup"
 LOGFILE="/var/log/hetznerbackup"
 SESSIONLOG=$(mktemp /var/tmp/hetznerbackup.XXXXXXXXX)
 ERRSTAT=0
@@ -26,19 +27,23 @@ job_main() {
     echo "Going for /etc" >> $SESSIONLOG
     duplicity $BMODE $dry /etc $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
+    duplicity cleanup --extra-clean --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/etc >> $SESSIONLOG 2>&1 || ERRSTAT=1
 
     echo "Going for /home" >> $SESSIONLOG
     duplicity $BMODE $dry /home $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1  || ERRSTAT=1
     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1 || ERRSTAT=1 
+    duplicity cleanup --extra-clean --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/home >> $SESSIONLOG 2>&1 || ERRSTAT=1
 
     echo "Going for /var/www" >> $SESSIONLOG
     duplicity $BMODE $dry /var/www $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1  || ERRSTAT=1
     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1  || ERRSTAT=1
+    duplicity cleanup --extra-clean --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/var/www >> $SESSIONLOG 2>&1 || ERRSTAT=1
 
     echo "Going for /var/lib/automysqlbackup" >> $SESSIONLOG
     if [ -e /var/lib/automysqlbackup/backupdone ]; then
            duplicity $BMODE $dry /var/lib/automysqlbackup $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup >> $SESSIONLOG 2>&1  || ERRSTAT=1
            duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup >> $SESSIONLOG 2>&1  || ERRSTAT=1
+           duplicity cleanup --extra-clean --force $dry $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
@@ -59,6 +64,9 @@ if [ -e $LOCKFILE ]; then
     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