Advertisement
Guest User

lvm backup of vbox

a guest
Apr 6th, 2013
89
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.  
  17. mkdir  $BACKUP/$VOL
  18.  
  19. function pause(){
  20.    read -p "$*"
  21. }
  22.  
  23. createsnap () {
  24. VOLUME=$1
  25. LOG=$2
  26. echo "in createsnap: " $VOLUME $LOG
  27. if ! /sbin/lvcreate -L10GB -s -n $VOLUME-snap /dev/vol/$VOLUME > $LOG 2>&1
  28. then                                                                                                                                  
  29.    echo "error creating snapshot $VOLUME " >> $LOG                                                                                    
  30.    /usr/bin/mail -s "backup error" $NOTIFY <  $LOG                                                                                    
  31.    exit 1                                                                                                                            
  32.  else                                                                                                                                
  33.     echo "created snapshot $VOLUME" >> $LOG                                                                                          
  34.  fi                                                                                                                                  
  35. }                                                                                                                                    
  36.                                                                                                                                      
  37. deletesnap () {                                                                                                                      
  38. VOLUME=$1                                                                                                                            
  39. LOG=$2                                                                                                                                
  40. if ! /sbin/lvremove -f /dev/vol/$VOLUME-snap   >> $LOG 2>&1                                                                          
  41. then                                                                                                                                  
  42.    echo "error removing snapshot $VOLUME" >> $LOG                                                                                    
  43.    /usr/bin/mail -s "backup error" $NOTIFY <  $LOG
  44.    exit 1
  45. else
  46.    echo "$VOLUME snapshot removed" >> $LOG
  47. fi
  48. }
  49.  
  50. backupsnap () {
  51. VOLUME=$1
  52. LOG=$2
  53. BACKUP=$3
  54.  
  55. if ! /bin/dd if=/dev/vol/$VOLUME-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOLUME/$VOLUME.$DATE.img.gz
  56. then
  57.    echo "error taking $VOLUME image" >> $LOG
  58.    /usr/bin/mail -s "backup error" $NOTIFY <  $LOG
  59.    exit 1
  60. else
  61.    echo "copied image $VOLUME"  >> $LOG
  62. fi
  63. }
  64.  
  65.  
  66. case "$VOL" in
  67.    vm1)
  68.       echo "backup vm1"
  69.       echo "pause vm"
  70.       VOLLIST='vm1 vm1-data1 vm1-data2'
  71.       /usr/bin/virsh suspend vm1
  72.       echo "create snapshots for each data volume"
  73.       for VOL in $VOLLIST
  74.       do
  75.          echo "create snapshot for: "  $VOL
  76.          createsnap $VOL $LOG
  77.       done
  78.       echo "resume vm1"
  79.       /usr/bin/virsh resume vm1
  80.       echo "backup each data volue"
  81.       for VOL in $VOLLIST
  82.       do
  83.          echo "make sure there is a folder to backup into "
  84.          mkdir $BACKUP/$VOL
  85.          echo "backup the data volume: "  $VOL
  86.          backupsnap $VOL $LOG $BACKUP
  87.       done
  88.       for VOL in $VOLLIST
  89.       do
  90.          echo "delete the snapshot for:  "  $VOL
  91.          deletesnap $VOL $LOG
  92.       done
  93.       echo "backup successful"
  94.       ;;
  95.    *)
  96.       echo "not backing up vm1"
  97.       echo "backing up the volumes"
  98.       if ! /sbin/lvcreate -L10GB -s -n $VOL-snap /dev/vol/$VOL > $LOG 2>&1
  99.       then
  100.          echo "error creating snapshot $VOL " >> $LOG
  101.          /usr/bin/mail -s "backup error" $NOTIFY <  $LOG
  102.          exit 1
  103.       else
  104.          echo "created snapshot $VOL" >> $LOG
  105.       fi
  106.  
  107.       if ! /bin/dd if=/dev/vol/$VOL-snap of=/dev/stdout bs=1M | gzip > $BACKUP/$VOL/$VOL.$DATE.img.gz
  108.       then
  109.          echo "error taking $VOL image" >> $LOG
  110.          /usr/bin/mail -s "backup error" $NOTIFY <  $LOG
  111.          exit 1
  112.       else
  113.          echo "copied image $VOL"  >> $LOG
  114.       fi
  115.  
  116.       if ! /sbin/lvremove -f /dev/vol/$VOL-snap   >> $LOG 2>&1
  117.       then
  118.          echo "error removing snapshot $VOL" >> $LOG
  119.          /usr/bin/mail -s "backup error" $NOTIFY <  $LOG
  120.          exit 1
  121.       else
  122.          echo "$VOL snapshot removed" >> $LOG
  123.       fi
  124.       ;;
  125. esac
  126. sync
  127. /usr/bin/mail -s "Backup of $VOL successful" $NOTIFY < $LOG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement