
私は Xen を使用しており、各 VM に対して毎朝 VM の新しいスナップショットを作成し、最後の 7 つを保存するプロセスを設定しています。
現在、各 VM の最新のスナップショットを復元するテストを行うスクリプトを作成しようとしています。
Xen コマンドラインでは、次のコマンドを使用して、特定の VM のすべてのスナップショットのリストを取得できます。
xe snapshot-list snapshot-of=${vm_uuid}
次の形式で 7 つのエントリを返します。
uuid ( RO) : fc6cb150-b264-830e-4fb9-7fec030e434d
name-label ( RW): 20220616-0118
name-description ( RW):
is-vmss-snapshot ( RO): true
どれが最新かを簡単に確認する方法はありますか?今のところ、名前ラベルの日付(例:20220616
)だけを確認すればよいのですが、名前の2番目の部分(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}
したがって、厳密に最新のものを見つけるわけではありませんが、スナップショットの名前に現在の日付が含まれていて、スナップショットが今日作成されたものである限り (そして今日のスナップショットは 1 つだけである限り)、機能するはずです。