Advertisement
Guest User

lvm backup of vbox

a guest
Apr 6th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 vm1"
  6.   echo "where /mnt/backup is the location to store the backup file"
  7.   echo "vm1 is the machine or volume to backup"
  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="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.    vm1)
  69.       echo "backup vm1"
  70.       echo "pause vm"
  71.       VOLLIST='vm1 vm1-data1 vm1-data2'
  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 vm1"
  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 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement