Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -x
- if [ $# -ne 2 ]; then
- echo "need to provide two paramaters"
- echo "example backup.sh /mnt/backup vm1"
- echo "where /mnt/backup is the location to store the backup file"
- echo "vm1 is the machine or volume to backup"
- echo "vm1 is used to backup the vm; all other paramaters backup a volume"
- exit 1
- fi
- BACKUP=$1
- VOL=$2
- DATE=`date +%Y-%m-%d`
- LOG=$BACKUP/log/$VOL.$DATE.log
- NOTIFY="backup@domain.com"
- mkdir $BACKUP/$VOL
- function pause(){
- read -p "$*"
- }
- createsnap () {
- VOLUME=$1
- LOG=$2
- echo "in createsnap: " $VOLUME $LOG
- if ! /sbin/lvcreate -L10GB -s -n $VOLUME-snap /dev/vol/$VOLUME > $LOG 2>&1
- then
- echo "error creating snapshot $VOLUME " >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "created snapshot $VOLUME" >> $LOG
- fi
- }
- deletesnap () {
- VOLUME=$1
- LOG=$2
- if ! /sbin/lvremove -f /dev/vol/$VOLUME-snap >> $LOG 2>&1
- then
- echo "error removing snapshot $VOLUME" >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "$VOLUME snapshot removed" >> $LOG
- fi
- }
- backupsnap () {
- VOLUME=$1
- LOG=$2
- BACKUP=$3
- if ! /bin/dd if=/dev/vol/$VOLUME-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOLUME/$VOLUME.$DATE.img.gz
- then
- echo "error taking $VOLUME image" >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "copied image $VOLUME" >> $LOG
- fi
- }
- case "$VOL" in
- vm1)
- echo "backup vm1"
- echo "pause vm"
- VOLLIST='vm1 vm1-data1 vm1-data2'
- /usr/bin/virsh suspend vm1
- echo "create snapshots for each data volume"
- for VOL in $VOLLIST
- do
- echo "create snapshot for: " $VOL
- createsnap $VOL $LOG
- done
- echo "resume vm1"
- /usr/bin/virsh resume vm1
- echo "backup each data volue"
- for VOL in $VOLLIST
- do
- echo "make sure there is a folder to backup into "
- mkdir $BACKUP/$VOL
- echo "backup the data volume: " $VOL
- backupsnap $VOL $LOG $BACKUP
- done
- for VOL in $VOLLIST
- do
- echo "delete the snapshot for: " $VOL
- deletesnap $VOL $LOG
- done
- echo "backup successful"
- ;;
- *)
- echo "not backing up vm1"
- echo "backing up the volumes"
- if ! /sbin/lvcreate -L10GB -s -n $VOL-snap /dev/vol/$VOL > $LOG 2>&1
- then
- echo "error creating snapshot $VOL " >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "created snapshot $VOL" >> $LOG
- fi
- if ! /bin/dd if=/dev/vol/$VOL-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOL/$VOL.$DATE.img.gz
- then
- echo "error taking $VOL image" >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "copied image $VOL" >> $LOG
- fi
- if ! /sbin/lvremove -f /dev/vol/$VOL-snap >> $LOG 2>&1
- then
- echo "error removing snapshot $VOL" >> $LOG
- /usr/bin/mail -s "backup error" $NOTIFY < $LOG
- exit 1
- else
- echo "$VOL snapshot removed" >> $LOG
- fi
- ;;
- esac
- sync
- /usr/bin/mail -s "Backup of $VOL successful" $NOTIFY < $LOG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement