Compare commits

...

2 Commits

Author SHA1 Message Date
Jochen Welzel 44dc136c8a add old snapshot deletion 2021-01-07 09:54:55 +01:00
Jochen Welzel 7fb8538a44 remove local old snapshot 2021-01-07 08:38:44 +01:00
1 changed files with 26 additions and 7 deletions

View File

@ -3,7 +3,7 @@
helpFunction() helpFunction()
{ {
echo "" echo ""
echo "Usage: $0 -v VmName -t TargetHost -d TargetDataset" echo "Usage: $0 -v VmName -t TargetHost -d TargetDataset -l LIMIT"
echo -e "\t-v Name of the vm to backup" echo -e "\t-v Name of the vm to backup"
echo -e "\t-t Backup target host name" echo -e "\t-t Backup target host name"
echo -e "\t-s VM source zfs dataset" echo -e "\t-s VM source zfs dataset"
@ -35,6 +35,13 @@ DATE=$(date "+%Y%m%d%H%M")
DATE30=$(date -d "-30day" "+%Y%m%d") DATE30=$(date -d "-30day" "+%Y%m%d")
SNAPNAME="backup_$DATE" 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.) VMDISKS=$(virsh domblklist $VM | egrep -o vd.)
DISKSPEC="" DISKSPEC=""
for disk in $VMDISKS for disk in $VMDISKS
@ -55,7 +62,7 @@ then
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
echo "VM snapshot creation failed" >&2 echo "VM snapshot creation failed" >&2
exit 1 abortFunction
else else
echo "Snapshot created without --quiesce" echo "Snapshot created without --quiesce"
fi fi
@ -65,7 +72,7 @@ zfs snapshot "$SRCZFS"@"$SNAPNAME"
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
echo "ZFS snapshot creation failed" >&2 echo "ZFS snapshot creation failed" >&2
exit 1 abortFunction
fi fi
for disk in $VMDISKS for disk in $VMDISKS
@ -79,7 +86,7 @@ do
if [[ $disk == *"snapshot"* ]] if [[ $disk == *"snapshot"* ]]
then then
echo "Snapshot deletion failed for $disk" >&2 echo "Snapshot deletion failed for $disk" >&2
exit 1 abortFunction
fi fi
done done
@ -100,10 +107,22 @@ if [ $? -eq 0 ]
then then
zfs set backup:success="true" $SRCZFS zfs set backup:success="true" $SRCZFS
zfs set backup:date="$DATE" $SRCZFS zfs set backup:date="$DATE" $SRCZFS
zfs destroy "$SRCZFS"@"$LASTSNAP"
else else
zfs set backup:success="false" $SRCZFS abortFunction
zfs set backup:failed="$DATE" $SRCZFS
fi fi
zfs destroy tank/snapshots/$VM 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