捐血一袋救人一命

2012年1月31日 星期二

定時自動進行 VMware Snapshot 管理

首先,要瞭解 vcbSnapshot 指令的功能

該指令可以用來建立 Snapshot 或是 刪除 Snapshot

建立 Snapshot 的指令語法

vcbSnapshot –h [VM Host Name/IP/FQDN] –u [User Name] –p [Password] –c [VM Guest] [Snapshot Name] [Snapshot Description]

[VM Host Name/IP/FQDN]、[User Name]、[Password]這三個參數一看就知道,不必贅述。

[VM Guest] 參數可以使用以下四種格式

moref:id
name:VM Guest Name
uuid:id
ipaddr:ip address

moref id 與 uuid 都是固定不變,要查詢 VM Guest 的 moref id/uuid 可以事先使用 vcbVmName 指令查詢

用 name:VM Guest Name 是最方便,不需要再去查詢

如果 VM Guest 沒有開機,就不能用 ipaddr 當作參數(無法辨識 VM Guest)

[Snapshot Name] 參數,考量到要自動刪除過期的 Snapshot ,所以用日期來命名

[Snapshot Description] 參數就隨你自己高興了,也可以不設定

刪除 Snapshot 的指令語法

vcbSnapshot –h [VM Host Name/IP/FQDN] –u [User Name] –p [Password] –d [VM Guest] [Snapshot]

[VM Guest] 參數同上

[Snapshot] 參數,有兩種格式

ssid:id
ssname:[Snapshot Name]

ssid 在執行 Snapshot 時會顯示,日後要查詢的話,也是用 vcbSnapshot 指令去查詢

ssname:[Snapshot Name] 就是使用當初建立 Snapshot 的Snapshot Name,所以前面才說,把Snapshot Name 設為建立日期,這樣就可以很方便用指令組合去自動刪除某一個 Snapshot

 

接下來就是 date 日期指令,讓 date 指令輸出我們要的日期格式

date +%y%m%d,輸出格日期格式就是 YYMMDD,日期是今日

date –d ‘7 days ago’ +%y%m%d,日期是七天前

關於日期的指令,以下網址有比較詳細的說明!

http://blog.longwin.com.tw/2010/07/linux-date-computer-2010/

 

所以要建立 Snapshot 的指令就是

vcbSnapshot -h [VM Host Name] –u [User Name] –p [Password] -c name:[VM Guest Name] “`date +%y%m%d`” "Auto Snapshot by Crontab"

要刪除七天前的 Snapshot 的指令就是

vcbSnapshot -h [VM Host Name] –u [User Name] –p [Password] -d name:[VM Guest Name] ssname:”`date -d '7 days ago' +%y%m%d`”

 

最後,就是把指令加入 crontab 去,這樣就大功告成了!

PS.請不要告訴我,你要操作 VMware ,卻不知道如何使用 crontab … :P
     如果真的不知道怎麼加到 crontab ,請看看鳥哥的網站教學吧…Thumbs-up

PS.Snapshot 不能完全取代 Backup 的功能,千萬不要只做 Snapshot 而不做備份,免得哪天系統全毀時,來跟我哭訴喔… :D

PS.Snapshot 千萬不要做太多,以免拖慢虛擬系統效能,所以請謹慎考慮你的備份政策

2 意見:

Jianyi 提到...

請問我直接在VMware貼上
date -d '7 days ago' +%y%m%d
卻出現下面錯誤
date: invalid date '7 days ago'
這樣是寫法有錯誤嗎?

Tom 提到...

看起來沒錯