1.开启EXSI主机SSH
2.使用SSH连接EXSI主机
SSH连接账号密码为登录EXSI主机时的账号密码
esxi重启会删除/vmfs/volumes目录外的文件,所以脚本放在/vmfs/volumes/datastore1
进入数据存储目录下,这个名称根据自己建立数据存储的名称来
cd /vmfs/volumes/datastore1/
创建存放脚本文件夹
mkdir crontabs
切换到存放脚本目录
cd crontabs
3.创建自动快照脚本
vi snapshot_creat.sh
填入自动快照脚本信息
#!/bin/sh
for i in `vim-cmd vmsvc/getallvms | grep -v nosnap | awk '{print $1}' | grep -e "[0-9]"`
do
vname=$(vim-cmd vmsvc/get.summary $i | grep name | awk '{ print $3 }' | cut -d \" -f 2)
vim-cmd vmsvc/snapshot.create $i $(date "+%F")
sleep 30s
if [ $? -eq 0 ];then
echo "$(date "+%F %T") : $vname snapshot create success.." >> ./schedule_snap.log
else
echo "$(date "+%F %T") : $vname snapshot create FAILED.." >> ./schedule_snap.log
fi
done
4.创建自动删除快照脚本
vi snapshot_del.sh
填入删除快照脚本信息
DAY=1 #保留快照的数量
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 -gt $DAY ]; then
DELETE_COUNT=$(($SNAPSHOT_COUNT-$DAY))
OLD_SNAPSHOT_ID=`vim-cmd vmsvc/snapshot.get $i | grep Id | head -$DELETE_COUNT | awk -F: '{print $2}'`
for n in $OLD_SNAPSHOT_ID
do
vim-cmd vmsvc/snapshot.remove $i $n > /dev/null
sleep 30s
done
fi
done
给两个脚本赋予执行权限
chmod +x *.sh
5.测试运行快照脚本
./snapshot_creat.sh
查看创建日志
cat schedule_snap.log
EXSI主机查看创建快照情况(有两条记录是因为我运行了两次脚本,待会用于测试删除脚本是否可以删除)
运行删除快照脚本
./snapshot_del.sh
6.设置脚本开机自动执行计划
复制当前路径
添加crond内容
vi /etc/rc.local.d/local.sh
添加以下信息,脚本路径替换为实际的路径
kill $(cat /var/run/crond.pid)
# 凌晨12点创建快照
/bin/echo "0 0 * * * /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root
# 凌晨3点删除快照
/bin/echo "0 3 * * * /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_del.sh" >> /var/spool/cron/crontabs/root
crond
运行脚本保存配置
/sbin/auto-backup.sh
7.重启EXSI主机
想测试重启后脚本有没有执行的话可以改一下cron,每5分钟创建1次快照
/bin/echo "*/5 * * * * /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root
标签:脚本,crontabs,vmsvc,快照,主机,EXSI,sh,snapshot
From: https://www.cnblogs.com/docker-/p/18215304