Перейти к основному содержимому

Резервное копирование и восстановление

Резервная копия принадлежит конкретной машине. Здесь описано, как создать копию, убедиться, что она появилась, восстановить из неё машину и удалить копию, когда она больше не нужна.

Создайте копию

Запрос не принимает тело: машина определяется параметрами пути. Создавайте копию перед изменением или обслуживанием — она станет точкой, к которой можно вернуться.

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. 1

    Создайте копию

    Сохраните projectId и vmId: все последующие действия остаются в пределах этой машины.

  2. 2

    Опрашивайте список копий

    Дождитесь появления новой записи. Как вариант, следите за машиной: пока копия создаётся, её status равен updating.

  3. 3

    Проверьте, какую ОС восстановит копия

    У записи копии есть sourceImageId — идентификатор образа, под которым работала машина на момент снятия. По нему видно, какую ОС вернёт восстановление. У копий, созданных до появления этого поля, оно равно null.

  4. 4

    Восстановите выбранную копию

    Восстановление — это изменение машины. Принятый запрос не означает, что машина уже снова готова к работе.

  5. 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.

Связанные эндпоинты