
저는 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
)만 확인하면 되지만 이름의 두 번째 부분( 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}
따라서 엄밀히 말하면 가장 최근의 것을 찾는 것은 아니지만 스냅샷의 이름에 현재 날짜가 포함되어 있고 오늘 스냅샷이 촬영된 경우(그리고 오늘은 스냅샷이 하나만 있는 경우) 작동할 것입니다.