#!/bin/sh # ============================================================= # Lageplan – Restore-Helfer # ============================================================= # Stellt einen Datenbank-Dump (und optional die Dateien) wieder her. # ACHTUNG: Der DB-Restore ist DESTRUKTIV – bestehende Daten werden ersetzt. # Vorher die Web-App stoppen und sicherstellen, dass niemand arbeitet. # # Verwendung (auf dem Server, im Verzeichnis mit der docker-compose.yml): # # 1) Verfügbare Backups anzeigen: # docker compose exec backup ls -lh /backups # # 2) Datenbank wiederherstellen (Dateiname aus Schritt 1): # docker compose exec backup sh /scripts/restore.sh db_2026-07-23_030000.dump # (funktioniert nur, wenn dieses Verzeichnis in den backup-Container gemountet ist; # sonst den Befehl aus dem Abschnitt "Ohne Skript" in docs/BACKUP.md nutzen.) # # 3) Dateien (Uploads) wiederherstellen: siehe docs/BACKUP.md # ============================================================= set -eu DUMP="${1:-}" BACKUP_DIR="${BACKUP_DIR:-/backups}" PGHOST="${PGHOST:-db}" PGUSER="${PGUSER:-lageplan}" PGDATABASE="${PGDATABASE:-lageplan}" if [ -z "$DUMP" ]; then echo "Verwendung: restore.sh " echo "Verfuegbare Dumps in $BACKUP_DIR:" ls -1 "$BACKUP_DIR"/db_*.dump 2>/dev/null || echo " (keine gefunden)" exit 1 fi FILE="$BACKUP_DIR/$DUMP" [ -f "$FILE" ] || { echo "Nicht gefunden: $FILE"; exit 1; } echo "!! DESTRUKTIV: Stelle '$DUMP' in Datenbank '$PGDATABASE' auf Host '$PGHOST' wieder her." echo " Bestehende Daten werden ersetzt. Abbruch mit Ctrl+C, weiter mit Enter." read -r _ pg_restore --clean --if-exists --no-owner -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" "$FILE" echo "[restore] Datenbank wiederhergestellt aus $DUMP"