]> git.sven.stormbind.net Git - sven/scripts.git/blob - hetzner/hetznerbackupv2.sh
Import hetzner backup scripts
[sven/scripts.git] / hetzner / hetznerbackupv2.sh
1 #!/bin/bash
2
3 ### Halt on errors
4 set -e
5
6 ### Do not inherit the following variables
7 # Safety net just in case some calls this
8 # script in a bogus way.
9 unset $dry
10
11 ### Debug
12 #set -x 
13 #set dry="--dry-run"
14
15 ### General settings
16 export PASSPHRASE=s
17 export FTP_PASSWORD=s
18 FTP_USER=uxxx
19 FTP_HOST=uxxx.your-backup.de
20 LOCKFILE="/var/lock/backup/hetznerbackup"
21 PROTO=ssh
22
23 ## Backup job for main
24 job_main() {
25     echo "Backing up main"
26
27     echo "Going for /etc"
28     duplicity $BMODE $dry /etc $PROTO://$FTP_USER@$FTP_HOST/main/etc
29     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/etc
30
31     echo "Going for /home"
32     duplicity $BMODE $dry /home $PROTO://$FTP_USER@$FTP_HOST/main/home
33     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/home
34
35     echo "Going for /var/www"
36     duplicity $BMODE $dry /var/www $PROTO://$FTP_USER@$FTP_HOST/main/var/www
37     duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/var/www
38
39     echo "Going for /var/lib/automysqlbackup"
40     if [ -e /var/lib/automysqlbackup/backupdone ]; then
41             duplicity $BMODE $dry /var/lib/automysqlbackup $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup
42             duplicity remove-all-but-n-full 5 --force $dry $PROTO://$FTP_USER@$FTP_HOST/main/automysqlbackup
43     else
44        echo "WARNING: It seems that the last mysql backup is still runing"
45        echo "Skipping mysql backup - please re-schedule"
46     fi
47 }
48
49 ### check for other runing instances of this script
50 if [ -e $LOCKFILE ]; then
51     echo "Lockfile $LOCKFILE found - aborting"
52     echo "This is a typical result of a failed backup run, please contact your admin"
53     exit 5
54 else
55     touch $LOCKFILE
56 fi
57
58 ### Set the duplicity backup mode we would like to use
59 if [[ $(LANG=C; date +%A) =~ Sunday ]]; then
60     echo "Runing in full mode"
61     BMODE="full"
62 else
63     echo "Runing in incr mode"
64     BMODE="incr"
65 fi
66
67 ### Start the backup jobs
68 job_main
69
70 ### remove the lockfile
71 rm $LOCKFILE