Virsh Backup Script Block Commit Mail

Aus Xinux Wiki
Version vom 2. April 2017, 15:57 Uhr von Thomas (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<source lang=bash> #!/bin/bash VM=$1 STATE=ss-$(date "+%s") BACKUP="/mnt/data/backup/mabel/$VM" DATE=$(date "+%Y-%m-%d-%H-%M") LOG=/tmp/$VM-$DATE.log SUBJECT="…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
#!/bin/bash
VM=$1
STATE=ss-$(date "+%s")
BACKUP="/mnt/data/backup/mabel/$VM"
DATE=$(date "+%Y-%m-%d-%H-%M")
LOG=/tmp/$VM-$DATE.log
SUBJECT="OK: $VM Backup"
MAILTO="thomas@xxxxx.lan"
test -d $BACKUP || mkdir -p $BACKUP
echo "start backup $VM $DATE" > $LOG
cp -v /etc/libvirt/qemu/$VM.xml $BACKUP/$DATE-$VM.xml >> $LOG
virsh domblklist $VM | grep "^[sv]d[abcd]" | tr -s " " | while read LINE
do
DEV=$(echo $LINE | cut -f 1 -d " ")
IMG=$(echo $LINE | cut -f 2 -d " ")
echo virsh snapshot-create-as --domain $VM $STATE --diskspec $DEV,file=$IMG.$STATE --disk-only --atomic  >> $LOG
if virsh snapshot-create-as --domain $VM $STATE --diskspec $DEV,file=$IMG.$STATE  --disk-only --atomic  >> $LOG
 then
   echo rsync $IMG  $BACKUP/$DATE-$IMG  >> $LOG
   if rsync --progress $IMG $BACKUP/$DATE-$(basename $IMG)  >> $LOG
     then
       echo virsh blockcommit $VM $DEV --active --verbose --pivot    >> $LOG
       if virsh blockcommit $VM $DEV --active --verbose --pivot    >> $LOG
         then
          rm -v $IMG.$STATE >> $LOG
          echo virsh snapshot-delete $VM --metadata $STATE >> $LOG
          virsh snapshot-delete $VM --metadata $STATE
         else
           echo "virsh blockcommit $VM $DEV failed"    >> $LOG
           SUBJECT="ERROR: $VM blockcommit failed"
         fi
       else
      echo rsync failed  >> $LOG
      SUBJECT="ERROR: $VM rsync failed"
    fi
   else
 echo virsh snapshot-create-as failed >> $LOG
    SUBJECT="ERROR: $VM snapshot create failed"
fi
done
ENDDATE=$(date "+%Y-%m-%d-%H-%M")
echo "end backup $VM $ENDDATE" >> $LOG
cat $LOG | mail -s "$SUBJECT" $MAILTO