]> git.sven.stormbind.net Git - sven/scripts.git/blob - hetzner/hetznerbackup.sh
Ignore timeouts on the envertech portal
[sven/scripts.git] / hetzner / hetznerbackup.sh
1 #!/bin/bash
2
3 ### Halt on errors
4 set -e
5
6 ### Debug
7 #set -x 
8
9 ### General settings
10 export PASSPHRASE=s
11 export FTP_PASSWORD=s
12 FTP_USER=u
13 FTP_HOST=h
14 LOCKFILE="/var/lock/backup/hetznerbackup"
15
16 ## Backup job for the dom0 main
17 job_main() {
18     echo "Backing up main/etc"
19     duplicity $BMODE /etc ftp://$FTP_USER@$FTP_HOST/main/etc
20     duplicity remove-all-but-n-full 5 --force ftp://$FTP_USER@$FTP_HOST/main/etc
21 }
22
23 ### Backup job for the domU void
24 job_void() {
25     ### mount all domU partitions
26     mount -o ro /dev/vg0/void-root /mnt/backup/void-root
27     mount -o ro /dev/vg0/void-home /mnt/backup/void-home
28     mount -o ro /dev/vg0/void-var /mnt/backup/void-var
29
30     if [ -e /mnt/backup/void-var/lib/automysqlbackup/backupdone ]; then
31         MYSQLOK="--include /mnt/backup/void-var/lib/automysqlbackup/backupdone"
32     else
33        echo "WARNING: It seems that the last mysql backup in the domU void is still runing"
34        echo "Skipping mysql backup - please re-schedule"
35     fi
36
37     echo "Backing up void"
38     duplicity $BMODE \
39         --exclude /mnt/backup/void-home/tcm \
40         --include /mnt/backup/void-root/etc \
41         --include /mnt/backup/void-home \
42         $MYSQLOK \
43         --exclude /mnt/backup \
44         /mnt/backup ftp://$FTP_USER@$FTP_HOST/void/
45     duplicity remove-all-but-n-full 5 --force ftp://$FTP_USER@$FTP_HOST/void/
46         
47
48     ### umount all domU partitions
49     umount /mnt/backup/void-root /mnt/backup/void-home /mnt/backup/void-var
50 }
51
52 ### check for other runing instances of this script
53 if [ -e $LOCKFILE ]; then
54     echo "Lockfile $LOCKFILE found - aborting"
55     echo "This is a typical result of a failed backup run, please contact your admin"
56     exit 5
57 else
58     touch $LOCKFILE
59 fi
60
61 ### Set the duplicity backup mode we would like to use
62 if [[ $(LANG=C; date +%A) =~ Sunday ]]; then
63     echo "Runing in full mode"
64     BMODE="full"
65 else
66     echo "Runing in incr mode"
67     BMODE="incr"
68 fi
69
70 ### Start the backup jobs
71 job_main
72 job_void
73
74 ### remove the lockfile
75 rm $LOCKFILE