Skip to content

13 Backup Restore

Mikhail Deynekin edited this page Oct 9, 2026 · 1 revision

13 · Бэкап и восстановление

← Home

Что резервируется

Данные Где Как бэкапится
База (жители, оплаты, журнал, аудит) MySQL/PostgreSQL/SQLite дамп mysqldump / pg_dump / копия файла SQLite
Конфигурация и секреты .bas-ip.config.local.php, storage/app/secrets тип full (по умолчанию бэкап — только БД)
Файлы приложения код снимок версии при автообновлении (14)
Журналы, очередь, кэш storage/ обычно не нужны; backup.include_storage при желании

Создание

  • UI: Админка → Данные → «Создать копию» (+ расписание автобэкапов в Настройках: keep N, шифрование, расписание cron).
  • CLI: bin/bas-ip backup:create [--type=db|full] [--note="перед обновлением"]
  • cron: 30 3 * * * cd /var/www/bas-ip && php bin/bas-ip backup:create --quiet

Копии — zip в storage/app/backups/ (имя содержит драйвер и дату), запись в таблице backups (тип, размер, статус, примечание). Ротация: хранится последние backup.keep (14) копий. Опционально: шифрование ключом приложения (backup.encrypt) и offsite (sftp).

Восстановление

UI: Админка → Данные → Бэкапы → «Восстановить» (двойное подтверждение). CLI: bin/bas-ip backup:restore ID [--yes] (ID из backup:list).

Что происходит: проверка архива → (для БД) гашение активных соединений → заливка дампа (MySQL/PG) или замена файла (SQLite) → проверка целостности → запись в аудит. Приложение на время восстановления лучше перевести в режим обслуживания (bin/bas-ip maintenance --on); шлагбаум продолжит открываться (maintenance не блокирует gate-маршруты).

Перенос на другой сервер / другую СУБД

  1. Старый сервер: backup:create --type=full, скачайте архив; либо экспортируйте данные: Админка → Данные → Экспорт (жители/оплаты JSON).
  2. Новый сервер: установите приложение (01), создайте базу той же или другой СУБД (схема переносима).
  3. Вариант А (та же СУБД): backup:restore из скачанного архива (положите файл в storage/app/backups/ и backup:list его увидит).
  4. Вариант Б (другая СУБД): bin/bas-ip migrate на новой БД → Админка → Данные → Импорт (JSON-экспорт жителей с контактами/машинами), импорт оплат отдельным файлом; журнал ворот переносится SQL-дампом таблиц gate_events/guest_passes при необходимости.
  5. Перенесите секреты: secret:list (имена) → secret:set на новом месте; скопируйте .bas-ip.config.local.php (поправьте БД/URL) и app.key — без него секреты и подписанные ссылки не расшифруются.

Экспорт/импорт как «лёгкий бэкап»

Регулярный экспорт JSON (жители + оплаты + журнал) в облако — хорошая дополнительная страховка от логических ошибок (в отличие от дампа, виден глазами). CLI: residents:export --format=json --status=all --include=contacts,cars,payments,invoices.

Проверка бэкапов

Раз в месяц восстанавливайте копию в тестовое окружение:

php bin/bas-ip backup:list
php bin/bas-ip backup:restore <ID> --yes     # на тестовом стенде!
php bin/bas-ip doctor

Бэкап, который ни разу не восстанавливали, — это не бэкап.


Дальше: 14 · Обновления

Clone this wiki locally