Suchen Sie mit der Xen-Befehlszeile nach dem aktuellsten Snapshot

Suchen Sie mit der Xen-Befehlszeile nach dem aktuellsten Snapshot

Ich verwende Xen und haben für jede unserer VMs einen Prozess eingerichtet, um jeden Morgen einen neuen Snapshot der VM zu erstellen, wobei die letzten sieben aufbewahrt werden.

Ich versuche jetzt, ein Skript zu schreiben, um die Wiederherstellung des neuesten Snapshots für jede VM zu testen.

In der Xen-Befehlszeile kann ich eine Liste aller Snapshots für eine bestimmte VM abrufen, indem ich Folgendes verwende:

xe snapshot-list snapshot-of=${vm_uuid}

Das Ergebnis sind sieben Einträge im folgenden Format:

uuid ( RO)                : fc6cb150-b264-830e-4fb9-7fec030e434d
          name-label ( RW): 20220616-0118
    name-description ( RW):
    is-vmss-snapshot ( RO): true

Gibt es eine einfache Möglichkeit, herauszufinden, welches das neueste ist? Bisher reicht mir das Datum im Namenslabel (z. B. 20220616), aber der zweite Teil des Namens ( 0118) ändert sich mit jedem Snapshot, und soweit ich weiß, kann ich bei der name-labelOption xez. B. keine Platzhalter verwenden.

xe snapshot-list snapshot-of=${vm_uuid} name-label=20220616*

Antwort1

Also habe ich das herausgefunden.

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}

Auch wenn nicht unbedingt der aktuellste Snapshot gesucht wird, sollte es funktionieren, solange die Snapshots das aktuelle Datum im Namen enthalten und heute ein Snapshot aufgenommen wurde (und es heute nur einen Snapshot gibt).

verwandte Informationen