food-market/deploy/prod-backup-offsite-pull.sh
nns b49abfdbd7
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
feat(prod): запуск admin.food-market.kz — бэкапы (hourly/daily/офсайт), restore-verify, мониторинг, deploy-prod
- prod-backup.sh (tier hourly 48ч / daily 30д + uploads), prod-backup-offsite-pull.sh (DR на dev-vm)
- prod-restore-verify.sh: restore во временную БД + сверка числа строк, дроп
- prod-monitor.sh: api/web/public/БД/диск/5xx → Telegram владельцу (+ --test)
- deploy-prod.sh: guard'ы (prod-postgres, .env chmod600, не dev-пароль, quick-login off,
  SEED_DEMO_DATA=false, issuer), бэкап ДО миграций, только --yes, НЕ в ночных
- systemd таймеры (backup-hourly/daily, monitor, offsite-pull); docs/prod-runbook.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 19:31:55 +05:00

19 lines
1.2 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Офсайт-копия прод-бэкапов на ДРУГОЙ хост (dev-vm 192.168.1.193). Запускается
# НА dev-vm по таймеру: тянет последний daily-дамп прода (prod-vm) сюда, хранит 30 дн.
# Направление dev→prod (рабочий SSH). Это «другая VM» для DR.
set -uo pipefail
PROD_HOST="${PROD_HOST:-nns@192.168.1.190}"
PROD_BACKUP_DIR="${PROD_BACKUP_DIR:-/opt/food-market-data/backups/daily}"
DEST="${FM_OFFSITE_LOCAL:-$HOME/fm-prod-backups}"
RET_DAYS="${FM_OFFSITE_RETENTION_DAYS:-30}"
mkdir -p "$DEST"
latest=$(ssh -o StrictHostKeyChecking=no "$PROD_HOST" "ls -t $PROD_BACKUP_DIR/db-*.dump 2>/dev/null | head -1" 2>/dev/null)
[ -n "$latest" ] || { echo "[offsite] нет daily-дампов на проде"; exit 1; }
base=$(basename "$latest")
if [ -f "$DEST/$base" ]; then echo "[offsite] уже есть: $base"; else
scp -o StrictHostKeyChecking=no "$PROD_HOST:$latest" "$DEST/" && echo "[offsite] скопирован $base → $DEST"
fi
find "$DEST" -maxdepth 1 -name 'db-*.dump' -mtime +"$RET_DAYS" -print -delete
echo "[offsite] готово ($(ls "$DEST"/db-*.dump 2>/dev/null | wc -l) копий)"