]> git.sven.stormbind.net Git - sven/scripts.git/commitdiff
move historic hetzner backup scripts
authorSven Hoexter <sven@stormbind.net>
Fri, 7 May 2021 07:12:29 +0000 (09:12 +0200)
committerSven Hoexter <sven@stormbind.net>
Fri, 7 May 2021 07:12:29 +0000 (09:12 +0200)
hetzner/hetznerbackup.sh [deleted file]
hetzner/hetznerbackupv2.sh [deleted file]
stormbind/hetznerbackup.sh [new file with mode: 0755]
stormbind/hetznerbackupv2.sh [new file with mode: 0755]

diff --git a/hetzner/hetznerbackup.sh b/hetzner/hetznerbackup.sh
deleted file mode 100755 (executable)
index e7bae64..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/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
diff --git a/hetzner/hetznerbackupv2.sh b/hetzner/hetznerbackupv2.sh
deleted file mode 100755 (executable)
index 8361077..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/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
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
diff --git a/stormbind/hetznerbackupv2.sh b/stormbind/hetznerbackupv2.sh
new file mode 100755 (executable)
index 0000000..8361077
--- /dev/null
@@ -0,0 +1,104 @@
+#!/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