Compare commits
2 Commits
e1ea936ffb
...
44dc136c8a
Author | SHA1 | Date |
---|---|---|
Jochen Welzel | 44dc136c8a | |
Jochen Welzel | 7fb8538a44 |
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue