Оформление
Восстановление базы и файлов
Команда restore предназначена для согласованного комплекта из дампа PostgreSQL, каталога вложений и прежнего ключа шифрования. Если у вас готовая копия от backup-run, удобнее использовать аварийное восстановление: оно проверяет манифест и принимает архив целиком.
Восстановление выполняют в новую установку PostgreSQL 17 с отдельным именем Compose-проекта и пустыми ресурсами. Оно не перезаписывает работающую систему. До начала убедитесь, что выбран именно каталог новой установки, а исходная база и резервная копия сохранены.
Для текущего комплекта с rootful Docker начните с sudo -i и выполняйте весь сценарий из root-shell. Одних прав группы docker недостаточно: подготовка создаёт runtime от root с правами 0700, а последующие шаги должны записывать файлы внутри него. Не меняйте эти права ради обхода ошибки доступа. Rootless Docker и user namespaces отдельно не квалифицированы.
Подготовка и импорт
- Подготовьте проверенный серверный комплект и
.env. Выберите квалифицированный образ, соответствующий восстанавливаемой версии. Для воспроизведения копии используйте её исходный образ. - Настройте отдельное файловое хранилище. Для S3 нужны новые доступы к пустому выделенному bucket/prefix; рабочее хранилище исходной системы не используйте.
- Предоставьте согласованные дамп, каталог файлов и ключ шифрования через защищённые абсолютные пути. Не выводите ключ в терминал или журнал.
- Выполните подготовку и импорт:
sh
cd /opt/ngensia/deploy
sh ngensia.sh init /mnt/ngensia-backup/recovery/encryption-key
sh ngensia.sh restore /mnt/ngensia-backup/recovery/database.dump /mnt/ngensia-backup/recovery/attachments
sh ngensia.sh start
sh ngensia.sh statusinit требует отсутствия runtime и создаёт новые пароли базы и сертификаты, сохраняя предоставленный ключ шифрования данных. restore проверяет отсутствие контейнера app, подтверждения прошлого импорта и таблиц в схеме public. Для S3 дополнительно проверяется пустота назначения.
Дамп загружается одной транзакцией с остановкой при ошибке, затем применяются миграции. Файлы проверяются; при S3 выполняется их импорт. Успех создаёт runtime/import-complete. Защищённый промежуточный архив файлов остаётся в runtime — учтите его при последующей уборке.
Приёмка результата
По маршруту закрытой HTTPS-приёмки проверьте вход, чтение существующей записи, открытие старого вложения и данные, использующие шифрование. Убедитесь, что внешние обработчики не отправляют повторные сообщения. Доступ пользователей открывается отдельно после приёмки.
Если проверка пустоты остановила импорт, не удаляйте таблицы или тома для обхода защиты. Установите причину и подготовьте другое пустое назначение. Контрольная сумма подтверждает целостность файла, но не заменяет проверку пользовательских данных после восстановления.