View difference between Paste ID: vDuAXmzE and uupSQyDi
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