#!/bin/sh DAY=4 #保留数量 for i in `vim-cmd vmsvc/getallvms | awk '{print $1}' | grep -e "[0-9]"` do SNAPSHOT_COUNT=`vim-cmd vmsvc/snapshot.get $i | egrep -- '--\|-CHILD|^\|-ROOT' | wc -l` if [ $SNAPSHOT_COUNT -ge $DAY ]; then let NUM=$SNAPSHOT_COUNT-$DAY OLD_SNAPSHOT_ID=`vim-cmd vmsvc/snapshot.get $i | grep Id | head -$NUM | awk -F: '{print $2}'` for n in $OLD_SNAPSHOT_ID do vim-cmd vmsvc/snapshot.remove $i $n > /dev/null done fi done
# 计划任务添加/var/spool/cron/crontabs/root
然后执行计划任务服务重启操作否则计划任务会不生效。
~ # cat /etc/rc.local.d/local.sh
/bin/echo '0 3 * * * /vmfs/volumes/54c7d083-18810fb1-2387-549f3504a12e/crontab/del_shot.sh' >> /var/spool/cron/crontabs/root
#脚本文件要放到/vmfs/volumes/***(存储目录)里,否则主机重启后脚本会删除
#kill $(cat /var/run/crond.pid)
#crond
以上操作会保留最近四次的快照
参考:http://abian.blog.51cto.com/751059/1363161 的文章略作修改实现了只保留最近几次的快照。