From 44dc136c8a57dd70982cf725c9b2a5d2a083474a Mon Sep 17 00:00:00 2001 From: Jochen Welzel Date: Thu, 7 Jan 2021 09:54:55 +0100 Subject: [PATCH] add old snapshot deletion --- libvirt-zsh-backup.sh | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/libvirt-zsh-backup.sh b/libvirt-zsh-backup.sh index 4230444..799e822 100644 --- a/libvirt-zsh-backup.sh +++ b/libvirt-zsh-backup.sh @@ -35,6 +35,13 @@ DATE=$(date "+%Y%m%d%H%M") DATE30=$(date -d "-30day" "+%Y%m%d") SNAPNAME="backup_$DATE" +abortFunction() +{ + zfs set backup:success="false" $SRCZFS + zfs set backup:failed="$DATE" $SRCZFS + exit 1 +} + VMDISKS=$(virsh domblklist $VM | egrep -o vd.) DISKSPEC="" for disk in $VMDISKS @@ -55,7 +62,7 @@ then if [ $? -ne 0 ] then echo "VM snapshot creation failed" >&2 - exit 1 + abortFunction else echo "Snapshot created without --quiesce" fi @@ -65,7 +72,7 @@ zfs snapshot "$SRCZFS"@"$SNAPNAME" if [ $? -ne 0 ] then echo "ZFS snapshot creation failed" >&2 - exit 1 + abortFunction fi for disk in $VMDISKS @@ -79,7 +86,7 @@ do if [[ $disk == *"snapshot"* ]] then echo "Snapshot deletion failed for $disk" >&2 - exit 1 + abortFunction fi done @@ -102,9 +109,20 @@ then zfs set backup:date="$DATE" $SRCZFS zfs destroy "$SRCZFS"@"$LASTSNAP" else - zfs set backup:success="false" $SRCZFS - zfs set backup:failed="$DATE" $SRCZFS + abortFunction fi - zfs destroy tank/snapshots/$VM + +# cleanup old backups + +OLDSNAPS=$(ssh $DESTHOST zfs list -r -t snapshot -o name $DESTZFS 2>/dev/null | grep $DATE30) +if [ ${#OLDSNAPS} -gt 0 ] +then + for oldsnap in $OLDSNAPS + do + ssh $DESTHOST sudo zfs destroy $oldsnap + done +else + echo "No old snapshots to cleanup" +fi