Virtual Machine Snapshot Delete
vm snapshot을 삭제한다.
전체 스냅샷 중에서 FinalSnapshotDueDay이전의 스냅샷을 지우되 FinalSnapshotCnt 이하로 지우지는 않는다.
#!/bin/bash
export _SDATE=$(date +"%Y%m%d%H")
export FinalSnapshotCnt=10
export FinalSnapshotDueDay=60
export VMNAME=$1
export NOW=`date +%Y%m%d%H`
export FinalSnapshotDay=`date +%Y%m%d%H --date="$FinalSnapshotDueDay days ago"`
echo "=========== SNAPSHOT BACKUP&DELETE START ! ============="
echo ">> VMNAME : $1"
echo ">> DATE : $_SDATE"
echo ">> FinalBackupDay : $FinalSnapshotDueDay"
echo ">> FinalSnapshotDay : $FinalSnapshotDay"
echo ">>> ## Old $VMNAME snapshot delete ! ##"
TotalsnapshotCnt=`VBoxManage snapshot $VMNAME list | grep Name | awk '{print ($2)}' | wc -l`
echo ' >> Total snapshot count = ' $TotalsnapshotCnt
echo ' >> Final snapshot remain count = ' $FinalSnapshotCnt
TargetdeleteSnapshotCnt=`expr $TotalsnapshotCnt - $FinalSnapshotCnt`
echo ' >> Total snapshot count - Final snapshot count =' $TargetdeleteSnapshotCnt
BackupAllFiles=$(VBoxManage snapshot $VMNAME list | grep Name | awk '{print ($2)}' | sort -n)
cnt=1
echo ' > ' $FinalSnapshotDay ' day before delete target snapshot list'
for i in $BackupAllFiles
do
snapshotDate=`echo $i | awk -F "-" '{print $1}'`
echo $cnt " : " $i
if [ $snapshotDate -le $FinalSnapshotDay ]
then
if [ $TargetdeleteSnapshotCnt -ge $cnt ]
then
snapshotDate=`echo $i | awk -F "-" '{print $1}'`
#echo $snapshotDate " vs " $FinalSnapshotDay
if [ $snapshotDate -le $FinalSnapshotDay ]
then
echo "Delete snapshot $i"
VBoxManage snapshot $1 delete $i
fi
else
echo " >> skip snapshot : " $i
fi
fi
cnt=$(expr $cnt + 1)
done
echo "=========== SNAPSHOT BACKUP&DELETE END ! ============="