我正在使用 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}
因此,虽然它并没有严格地找到最新的一个,但只要快照的名称包含当前日期,并且快照是在今天拍摄的(并且今天只有一个快照),它就应该可以工作。