Резервное копирование и восстановление
Резервная копия принадлежит конкретной машине. Здесь описано, как создать копию, убедиться, что она появилась, восстановить из неё машину и удалить копию, когда она больше не нужна.
Создайте копию
Запрос не принимает тело: машина определяется параметрами пути. Создавайте копию перед изменением или обслуживанием — она станет точкой, к которой можно вернуться.
curl --request POST \
--url 'https://api.zennohosting.com/v1/projects/{projectId}/vms/{vmId}/backups' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json'
Старая копия удаляется автоматически
У каждой машины хранится не больше фиксированного числа копий — сейчас семь. Если новая копия превысила бы этот предел, самая старая удаляется автоматически, и запрос из-за этого не завершается ошибкой: он лишь занимает немного больше времени. Если вам нужна долгая история, выгружайте копии наружу самостоятельно — API их не хранит дольше предела.
Дождитесь появления копии
Ответ 202 означает только то, что запрос принят. Запись в списке копий появляется после
успешного завершения: если создание упало, записи не будет вовсе. Поэтому появление копии в списке — самый надёжный
признак успеха.
Пока идёт резервное копирование, машина заблокирована: запуск, остановка, создание ещё одной копии и другие операции
с той же машиной отвечают 409 Conflict, пока текущая операция не закончится.
- 1
Создайте копию
Сохраните
projectIdиvmId: все последующие действия остаются в пределах этой машины. - 2
Опрашивайте список копий
Дождитесь появления новой записи. Как вариант, следите за машиной: пока копия создаётся, её
statusравенupdating. - 3
Проверьте, какую ОС восстановит копия
У записи копии есть
sourceImageId— идентификатор образа, под которым работала машина на момент снятия. По нему видно, какую ОС вернёт восстановление. У копий, созданных до появления этого поля, оно равноnull. - 4
Восстановите выбранную копию
Восстановление — это изменение машины. Принятый запрос не означает, что машина уже снова готова к работе.
- 5
Удалите ненужные копии
Когда точка возврата больше не нужна, удаляйте её явно, не дожидаясь автоматической ротации.
Восстановление
Восстановление работает с конкретной копией. Передайте тот backupId, который получили из списка или
отдельного запроса. После восстановления прочитайте машину и убедитесь, что её status вернулся в
active, а bootStatus соответствует ожидаемому, прежде чем возвращать трафик.
curl --request POST \
--url 'https://api.zennohosting.com/v1/projects/{projectId}/vms/{vmId}/backups/{backupId}/restore' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json'
Копии при пересборке машины
Пересборка принимает флаг deleteBackups. По умолчанию он равен false, и копии сохраняются.
Передайте true, если вместе с пересборкой нужно удалить все копии этой машины.
Смысл флага виден при смене ОС: копия, снятая под прежней операционной системой, не восстановится осмысленно на новую. Хранить её после смены образа не только бесполезно, но и рискованно — кто-нибудь попробует её восстановить.
curl --request POST \
--url 'https://api.zennohosting.com/v1/projects/{projectId}/vms/{vmId}/rebuild' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"imageId": "00000000-0000-0000-0000-000000000000",
"deleteBackups": true
}'
Проверяйте результат по состоянию машины
Не считайте восстановление мгновенным. Прочитайте машину и проверьте status и bootStatus; если
что-то пошло не так, причину даст запись операции и её поле failureCode.
Связанные эндпоинты
/projects/{projectId}/vms/{vmId}/backupsСоздать резервную копию машины.
/projects/{projectId}/vms/{vmId}/backupsПолучить список копий машины.
/projects/{projectId}/vms/{vmId}/backups/{backupId}Прочитать копию и её sourceImageId.
/projects/{projectId}/vms/{vmId}/backups/{backupId}/restoreВосстановить машину из выбранной копии.
/projects/{projectId}/vms/{vmId}/rebuildПересобрать машину, при необходимости удалив её копии.
/projects/{projectId}/vms/{vmId}/backups/{backupId}Удалить копию, которая больше не нужна.