
我正在使用 Xen,並且對於每個 VM,我們都設定了一個流程來每天早上建立 VM 的新快照,並保留最後七個快照。
我現在正在嘗試編寫一個腳本來測試恢復每個虛擬機器的最新快照。
在 Xen 命令列中,我可以使用以下命令來取得給定 VM 的所有快照的清單:
xe snapshot-list snapshot-of=${vm_uuid}
它以以下格式傳回七個整數:
uuid ( RO) : fc6cb150-b264-830e-4fb9-7fec030e434d
name-label ( RW): 20220616-0118
name-description ( RW):
is-vmss-snapshot ( RO): true
有沒有簡單的方法可以找出哪一個是最新的,因為到目前為止我所要做的就是名稱標籤中的日期(例如20220616
),但是名稱的第二部分(0118
)隨每個快照而變化,並且據我所知,我不能使用通配符來name-label
選擇xe
例如
xe snapshot-list snapshot-of=${vm_uuid} name-label=20220616*
答案1
所以我想通了。
today=$(date +%Y%m%d)
ss_name=$(xe snapshot-list snapshot-of=${vm_uuid} | grep ${today} | awk -F: '{print $2}' | awk '{$1=$1};1')
ss_uuid=$(xe snapshot-list name-label="${ss_name}" | awk '{print $5}') echo $ss_uuid
echo ${ss_uuid}
因此,雖然它並不是嚴格查找最新的快照,但只要快照的名稱中包含當前日期,並且快照是在今天拍攝的(並且今天只有一個快照),它就應該可以工作。