Repository navigation
13 Backup Restore
| Данные | Где | Как бэкапится |
|---|---|---|
| База (жители, оплаты, журнал, аудит) | 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-маршруты).
- Старый сервер:
backup:create --type=full, скачайте архив; либо экспортируйте данные: Админка → Данные → Экспорт (жители/оплаты JSON). - Новый сервер: установите приложение (01), создайте базу той же или другой СУБД (схема переносима).
- Вариант А (та же СУБД):
backup:restoreиз скачанного архива (положите файл вstorage/app/backups/иbackup:listего увидит). - Вариант Б (другая СУБД):
bin/bas-ip migrateна новой БД → Админка → Данные → Импорт (JSON-экспорт жителей с контактами/машинами), импорт оплат отдельным файлом; журнал ворот переносится SQL-дампом таблицgate_events/guest_passesпри необходимости. - Перенесите секреты:
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 · Обновления