#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT="$(dirname "$SCRIPT_DIR")" COMPOSE="$ROOT/compose/docker-compose.yml" ENV="$ROOT/.env" if [ -z "${1:-}" ]; then echo "Verwendung: $0 " echo "Verfügbare Backups:" ls -lht "$ROOT/backups/" exit 1 fi BACKUP="$1" if [ ! -d "$BACKUP" ]; then echo "Fehler: Verzeichnis '$BACKUP' nicht gefunden." exit 1 fi # shellcheck source=/dev/null source "$ENV" echo "[restore] Stelle wieder her aus: $BACKUP" echo "[restore] Stack wird gestoppt..." docker compose -f "$COMPOSE" down # n8n data echo "[restore] n8n Daten..." rm -rf "$ROOT/data/n8n" mkdir -p "$ROOT/data/n8n" tar -xzf "$BACKUP/n8n-data.tar.gz" -C "$ROOT/data" # Postgres echo "[restore] Datenbank wird gestartet..." docker compose -f "$COMPOSE" up -d postgres echo "[restore] Warte auf PostgreSQL..." sleep 10 echo "[restore] Datenbank-Restore..." docker compose -f "$COMPOSE" exec -T postgres \ psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" \ < "$BACKUP/postgres.sql" echo "[restore] Stack wird neu gestartet..." docker compose -f "$COMPOSE" up -d echo "[restore] Fertig. Stack-Status:" docker compose -f "$COMPOSE" ps