SHOW:
|
|
- or go back to the newest paste.
1 | #!/bin/bash | |
2 | set -x | |
3 | if [ $# -ne 2 ]; then | |
4 | echo "need to provide two paramaters" | |
5 | - | echo "example backup.sh /mnt/backup ml-mail1" |
5 | + | echo "example backup.sh /mnt/backup vm1" |
6 | echo "where /mnt/backup is the location to store the backup file" | |
7 | - | echo "ml-mail1 is the machine or volume to backup" |
7 | + | echo "vm1 is the machine or volume to backup" |
8 | - | echo "ml-mail1 is used to backup the vm; all other paramaters backup a volume" |
8 | + | echo "vm1 is used to backup the vm; all other paramaters backup a volume" |
9 | exit 1 | |
10 | fi | |
11 | ||
12 | BACKUP=$1 | |
13 | VOL=$2 | |
14 | DATE=`date +%Y-%m-%d` | |
15 | LOG=$BACKUP/log/$VOL.$DATE.log | |
16 | - | NOTIFY="geoff@gnaa.net,steve@magellanlaw.ca" |
16 | + | NOTIFY="backup@domain.com" |
17 | ||
18 | mkdir $BACKUP/$VOL | |
19 | ||
20 | function pause(){ | |
21 | read -p "$*" | |
22 | } | |
23 | ||
24 | createsnap () { | |
25 | VOLUME=$1 | |
26 | LOG=$2 | |
27 | echo "in createsnap: " $VOLUME $LOG | |
28 | if ! /sbin/lvcreate -L10GB -s -n $VOLUME-snap /dev/vol/$VOLUME > $LOG 2>&1 | |
29 | then | |
30 | echo "error creating snapshot $VOLUME " >> $LOG | |
31 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
32 | exit 1 | |
33 | else | |
34 | echo "created snapshot $VOLUME" >> $LOG | |
35 | fi | |
36 | } | |
37 | ||
38 | deletesnap () { | |
39 | VOLUME=$1 | |
40 | LOG=$2 | |
41 | if ! /sbin/lvremove -f /dev/vol/$VOLUME-snap >> $LOG 2>&1 | |
42 | then | |
43 | echo "error removing snapshot $VOLUME" >> $LOG | |
44 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
45 | exit 1 | |
46 | else | |
47 | echo "$VOLUME snapshot removed" >> $LOG | |
48 | fi | |
49 | } | |
50 | ||
51 | backupsnap () { | |
52 | VOLUME=$1 | |
53 | LOG=$2 | |
54 | BACKUP=$3 | |
55 | ||
56 | if ! /bin/dd if=/dev/vol/$VOLUME-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOLUME/$VOLUME.$DATE.img.gz | |
57 | then | |
58 | echo "error taking $VOLUME image" >> $LOG | |
59 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
60 | exit 1 | |
61 | else | |
62 | echo "copied image $VOLUME" >> $LOG | |
63 | fi | |
64 | } | |
65 | ||
66 | ||
67 | case "$VOL" in | |
68 | - | ml-mail1) |
68 | + | vm1) |
69 | - | echo "backup ml-mail1" |
69 | + | echo "backup vm1" |
70 | echo "pause vm" | |
71 | - | VOLLIST='ml-mail1 ml-mail1-data1 ml-mail1-data2' |
71 | + | VOLLIST='vm1 vm1-data1 vm1-data2' |
72 | - | /usr/bin/virsh suspend ml-mail1 |
72 | + | /usr/bin/virsh suspend vm1 |
73 | echo "create snapshots for each data volume" | |
74 | for VOL in $VOLLIST | |
75 | do | |
76 | echo "create snapshot for: " $VOL | |
77 | createsnap $VOL $LOG | |
78 | done | |
79 | - | echo "resume ml-mail1" |
79 | + | echo "resume vm1" |
80 | - | /usr/bin/virsh resume ml-mail1 |
80 | + | /usr/bin/virsh resume vm1 |
81 | echo "backup each data volue" | |
82 | for VOL in $VOLLIST | |
83 | do | |
84 | echo "make sure there is a folder to backup into " | |
85 | mkdir $BACKUP/$VOL | |
86 | echo "backup the data volume: " $VOL | |
87 | backupsnap $VOL $LOG $BACKUP | |
88 | done | |
89 | for VOL in $VOLLIST | |
90 | do | |
91 | echo "delete the snapshot for: " $VOL | |
92 | deletesnap $VOL $LOG | |
93 | done | |
94 | echo "backup successful" | |
95 | ;; | |
96 | *) | |
97 | - | echo "not backing up mail1" |
97 | + | echo "not backing up vm1" |
98 | echo "backing up the volumes" | |
99 | if ! /sbin/lvcreate -L10GB -s -n $VOL-snap /dev/vol/$VOL > $LOG 2>&1 | |
100 | then | |
101 | echo "error creating snapshot $VOL " >> $LOG | |
102 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
103 | exit 1 | |
104 | else | |
105 | echo "created snapshot $VOL" >> $LOG | |
106 | fi | |
107 | ||
108 | if ! /bin/dd if=/dev/vol/$VOL-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOL/$VOL.$DATE.img.gz | |
109 | then | |
110 | echo "error taking $VOL image" >> $LOG | |
111 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
112 | exit 1 | |
113 | else | |
114 | echo "copied image $VOL" >> $LOG | |
115 | fi | |
116 | ||
117 | if ! /sbin/lvremove -f /dev/vol/$VOL-snap >> $LOG 2>&1 | |
118 | then | |
119 | echo "error removing snapshot $VOL" >> $LOG | |
120 | /usr/bin/mail -s "backup error" $NOTIFY < $LOG | |
121 | exit 1 | |
122 | else | |
123 | echo "$VOL snapshot removed" >> $LOG | |
124 | fi | |
125 | ;; | |
126 | esac | |
127 | sync | |
128 | /usr/bin/mail -s "Backup of $VOL successful" $NOTIFY < $LOG |