Virsh Backup Script Block Commit Mail
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