Skip to main content

Virtual Machine Snapshot Delete

vm snapshot을 삭제한다. 

 

#!/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   ! ============="