Backup сохраняет БД, изображения и сведения о релизе в одной точке восстановления. Для ручного переноса dev используйте дамп и архив файлов.
1. Проверьте, включён ли backup
В Deployment → Deployment environments откройте профиль и выберите Backup destination. В JSON это значение backup.kind:
| Значение | Что происходит |
|---|---|
none |
Автоматических копий нет; backup и restore недоступны |
local |
Копии хранятся в <root>/backups на сервере |
s3 |
Копии отправляются в отдельный приватный bucket/prefix |
Для prod-local каталог backup вычисляется из пути проекта и имени профиля. Для серверного Local directory путь задаётся в профиле UI. Local-копия на том же диске не защищает от потери машины — сохраняйте её также вне сервера. Backup и рабочие изображения должны иметь разные S3 bucket/prefix.
Если выбран None, сначала включите Local/S3 через reconfigure. Смена места хранения не переносит старые точки; отключение не удаляет их.
2. Создайте точку
Работайте из корня проекта: Source — на VPS под пользователем deployment, Archive/Registry — на управляющем компьютере, prod-local — на своём компьютере.
bash ./deploy/control backup --env production --confirm production
bash ./deploy/control status --env production --json
Для prod-local замените production на local. На время копирования контроллер остановит запись приложения и очистку изображений, затем вернёт приложение в работу. Собственные фоновые задачи и SQL-запись остановите отдельно.
Сохраните ID точки из вывода или lastBackup в status. null означает, что подтверждённой копии в статусе нет. Для local точки лежат в <backup.root>/<project>/<environment>/points/<point-id>/; для S3 смотрите выбранный prefix. Команды backup list сейчас нет.
3. Восстановите нужную точку
Restore вернёт данные на момент копии: более поздних записей в восстановленной БД не будет. Если нужны и текущие данные, сначала сохраните их отдельной точкой.
bash ./deploy/control restore --env production \
--recovery-point POINT_ID --confirm-restore production
bash ./deploy/control status --env production --json
Подставьте ID полной точки. Restore использует --confirm-restore, а не --confirm. Контроллер подготовит новую БД и медиакаталог, проверит их и переключит приложение. Прежние данные сохранятся. После запуска проверьте записи, картинки и интеграции, прежде чем что-либо удалять.
Если restore прерван, начните со status/reconcile и восстановления операции. Не запускайте ещё один restore поверх незавершённого.
Что сохранить вместе с backup
Точка включает PostgreSQL, media-файлы и размеры, сведения о релизе, контрольные суммы и отметку завершения. Частичная точка не подходит для restore. Хранение оставляет семь дневных и четыре недельных точки по UTC, защищает незавершённые операции и не удаляет последнюю рабочую копию из-за неудачного backup.
Отдельно сохраните секреты, приватные ключи и доступ SSH — их в backup нет. Также нужны точные образы релиза: Registry сохраняет их в registry, Source/Archive — в image archive. Проверенные архивы сервера лежат в <root>/image-archives; это отдельные файлы, не часть backup-точки.
Восстановление на новом сервере
Подготовьте сервер, профиль окружения, секреты и доступ к копиям по инструкции развёртывания. Сохраните исходные project/environment, по которым находятся точки. Предоставьте релиз и его образы, выполните provision, затем restore. Для Source нужен checkout на VPS; Archive/Registry управляются через SSH.
Это сценарий штатной backup-точки. Для импорта dev-дампа сначала требуется успешный первый deploy. Не создавайте current/reservation-файлы вручную. Периодически проверяйте restore в отдельном окружении: наличие файлов само по себе не подтверждает возможность восстановления.
| Команда | Результат |
|---|---|
| backup | Новая копия БД и медиа |
| restore | Данные из выбранной копии |
| rollback | Предыдущий код; данные и миграции остаются |