
Estoy usando Xen y para cada una de nuestras máquinas virtuales hemos configurado un proceso para crear una nueva instantánea de la máquina virtual cada mañana, conservando las últimas siete.
Ahora estoy intentando escribir un script para probar la restauración de la última instantánea para cada VM.
En la línea de comando de Xen puedo obtener una lista de todas las instantáneas de una máquina virtual determinada usando:
xe snapshot-list snapshot-of=${vm_uuid}
que devuelve siete enteros en el siguiente formato:
uuid ( RO) : fc6cb150-b264-830e-4fb9-7fec030e434d
name-label ( RW): 20220616-0118
name-description ( RW):
is-vmss-snapshot ( RO): true
¿Existe una manera fácil de saber cuál es la última, ya que hasta ahora todo lo que tengo que hacer es la fecha en la etiqueta del nombre (por ejemplo 20220616
), pero la segunda parte del nombre ( 0118
) cambia con cada instantánea, y como Por lo que sé, no puedo usar comodines con la name-label
opción de, xe
por ejemplo
xe snapshot-list snapshot-of=${vm_uuid} name-label=20220616*
Respuesta1
Entonces me di cuenta de esto.
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}
Entonces, si bien no se trata estrictamente de encontrar la más reciente, siempre que las instantáneas contengan la fecha actual en el nombre y se haya tomado una instantánea hoy (y solo hay una instantánea hoy), debería funcionar.