Бэкап: полный оффсайт-бэкап прода на VPS (БД + uploads + achievements) + восстановление
- scripts/backup.sh: консистентный снимок SQLite (.backup) + архив fs_<TS>.tar.gz с uploads и achievements в backups/, локальная ротация; при заданном BACKUP_VPS_HOST — push на VPS (scp отдельным ключом/юзером) с удалённой ротацией. Настройки читаются из .env (BACKUP_*). - scripts/restore.sh: восстановление архива в прод (stop app → очистка тома → docker cp → start). - .env.example: блок BACKUP_* (host/user/dir/key/keep). .gitignore: id_backup* (ключ бэкапа). - deploy/pi/README, deploy/vps/README: настройка ключа и юзера backup, /srv/fs-backups, cron, restore. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,17 @@ PROD_DATABASE_URL=sqlite:////data/forbidden_stars.db
|
||||
DEV_UPLOAD_DIR=./data/dev/uploads
|
||||
PROD_UPLOAD_DIR=/data/uploads
|
||||
|
||||
# ─── БЭКАП (оффсайт-копия на VPS; читает scripts/backup.sh на хосте Pi) ───────
|
||||
# Полный бэкап (БД + uploads + achievements) кладётся локально в backups/, и — если задан
|
||||
# BACKUP_VPS_HOST — копируется на VPS (Pi → VPS push, т.к. Pi за CGNAT). Пусто = только локально.
|
||||
# Ключ бэкапа — deploy/backup/id_backup (в git НЕ идёт); его pubkey → authorized_keys у backup@VPS.
|
||||
BACKUP_VPS_HOST=
|
||||
BACKUP_VPS_USER=backup
|
||||
BACKUP_VPS_DIR=/srv/fs-backups
|
||||
BACKUP_VPS_KEY=deploy/backup/id_backup
|
||||
BACKUP_KEEP_LOCAL=14
|
||||
BACKUP_KEEP_REMOTE=30
|
||||
|
||||
# ─── ПРОЧЕЕ ───────────────────────────────────────────────────────────────────
|
||||
# Часовой пояс приложения (фикс. смещение в часах; МСК = 3)
|
||||
APP_TZ_OFFSET_HOURS=3
|
||||
|
||||
Reference in New Issue
Block a user