#!/usr/bin/env bash # OPENBUREAU — Backup der Postgres-DB. # # WICHTIG: Foren, Threads und Wortmeldungen (Dialog) leben NUR in Postgres — # anders als content/*.md sind sie NICHT in Git. Ohne Backup sind sie beim # Verlust des Volumes weg. Dieses Skript dumpt die ganze DB komprimiert weg. # # Auf dem Host/LXC im cms/-Verzeichnis ausführen (oder per Cron, siehe README): # bash scripts/backup-db.sh # # Wiederherstellen: # gunzip -c backups/openbureau-.sql.gz \ # | docker compose exec -T db psql -U supabase_admin -d postgres set -euo pipefail # Ins cms/-Verzeichnis (eine Ebene über scripts/). cd "$(dirname "$0")/.." DIR="${BACKUP_DIR:-./backups}" KEEP="${BACKUP_KEEP:-14}" # wie viele Dumps behalten mkdir -p "$DIR" TS="$(date +%Y%m%d-%H%M%S)" OUT="$DIR/openbureau-$TS.sql.gz" docker compose exec -T db pg_dump -U supabase_admin -d postgres | gzip > "$OUT" echo "✓ Backup: $OUT ($(du -h "$OUT" | cut -f1))" # Rotation: nur die letzten $KEEP Dumps behalten. ls -1t "$DIR"/openbureau-*.sql.gz 2>/dev/null | tail -n +$((KEEP + 1)) | xargs -r rm -f