天天看點

esxi 自動給虛拟機打快照(定時快照任務)

作者:雲南康之晨科技

esxi 自動給虛拟機打快照(定時快照任務)

esxi重新開機之後會清除 /vmfs/volumes 目錄以外的檔案,故需将腳本放在 /vmfs/volumes/datastore1 目錄中

1.添加新增快照和删除快照的指令

cd /vmfs/volumes/datastore1 #進入esxi存儲目錄datastore1目錄各自不同,請修改為你的存儲位址

mkdir crontabs #建立crontabs檔案夾

cd crontabs #進入剛剛建立的crontabs檔案夾

touch snapshot_creat.sh #建立snapshot_creat.sh檔案(建立快照時調用的檔案)

vi snapshot_creat.sh #編輯snapshot_creat.sh檔案

輸入i進入文本編輯狀态

内容如下:

#!/bin/sh

# 我這邊單獨指定了虛拟機[51,54,56,57,58,59,60,65]做快照,使用vim-cmd vmsvc/getallvms指令查詢所有虛拟機編号

#auto create ESXi snapshots

for i in `vim-cmd vmsvc/getallvms |grep [51,54,56,57,58,59,60,65]| 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 #

按ESC退出編輯狀态

輸入:wq儲存并退出

touch snapshot_del.sh #建立snapshot_del.sh檔案(清理快照時調用的檔案)

vi snapshot_del.sh #編輯snapshot_del.sh檔案

輸入i進入文本編輯狀态

内容如下:

#!/bin/sh

DAY=3 #保留快照的數量

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

按ESC退出編輯狀态

輸入:wq儲存并退出

2、添加crond任務

vi /etc/rc.local.d/local.sh

輸入i進入文本編輯狀态

内容如下:

kill $(cat /var/run/crond.pid)

/bin/echo "0 1 * * 2,4 sh /vmfs/volumes/你的存儲檔案夾/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root

/bin/echo "30 2 * * 2,4 sh /vmfs/volumes/你的存儲檔案夾/crontabs/snapshot_del.sh" >> /var/spool/cron/crontabs/root

crond

按ESC退出編輯狀态

輸入:wq儲存并退出

輸入:

kill $(cat /var/run/crond.pid) #結束自動任務程序(非必要,重新開機即可實作)

crond #重新開機自動任務程序(非必要,重新開機即可實作)

reboot #重新開機ESXI,注意,一定要正常關閉所有虛拟機再重新開機

說明:

0 1 * * 2,4 # 定時任務分别對應 **分 時 日 月 星期** 即為,每周二周四的一點執行任務

30 2 * * 2,4 # 定時任務分别對應 **分 時 日 月 星期** 即為,每周二周四的兩點半執行任務

00 1 * * 6 # 定時任務分别對應 **分 時 日 月 星期** 即為,每周六的一點執行任務

**/sbin/auto-backup.sh** 儲存local.sh的修改設定,使其**永久生效**

設定完成重新開機ESXI生效