63 lines
2.1 KiB
Bash
Executable File
63 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Restore tracker.db from Restic backup (Hetzner Storage Box)
|
|
#
|
|
# Voraussetzungen:
|
|
# - restic installiert
|
|
# - RESTIC_PASSWORD aus Keychain: security find-generic-password -s restic-macmini -w
|
|
# - SSH-Key für Storage Box konfiguriert
|
|
#
|
|
# Nutzung:
|
|
# ./scripts/restore-db.sh # Letzte Version
|
|
# ./scripts/restore-db.sh latest # Letzte Version (explizit)
|
|
# ./scripts/restore-db.sh 2026-04-01 # Bestimmtes Datum (sucht nächsten Snapshot)
|
|
|
|
set -euo pipefail
|
|
|
|
REPO="sftp:u438391@u438391.your-storagebox.de:macmini-backup"
|
|
DB_PATH_IN_BACKUP="Users/dotty/Nextcloud/dotty/projekte/2026-03-27 Antragstracker Hagen _WIP_/antragstracker/data/tracker.db"
|
|
RESTORE_TARGET="./data/tracker.db"
|
|
|
|
export RESTIC_PASSWORD=$(security find-generic-password -s restic-macmini -w 2>/dev/null || echo "")
|
|
if [ -z "$RESTIC_PASSWORD" ]; then
|
|
echo "❌ Restic-Passwort nicht im Keychain gefunden (restic-macmini)"
|
|
echo " Manuell: export RESTIC_PASSWORD=<passwort>"
|
|
exit 1
|
|
fi
|
|
|
|
SNAPSHOT="${1:-latest}"
|
|
|
|
echo "🔄 Restore tracker.db aus Restic (Snapshot: $SNAPSHOT)..."
|
|
|
|
# Restore in temporäres Verzeichnis
|
|
TMPDIR=$(mktemp -d)
|
|
restic -r "$REPO" restore "$SNAPSHOT" \
|
|
--include "$DB_PATH_IN_BACKUP" \
|
|
--target "$TMPDIR"
|
|
|
|
RESTORED="$TMPDIR/$DB_PATH_IN_BACKUP"
|
|
|
|
if [ ! -f "$RESTORED" ]; then
|
|
echo "❌ tracker.db nicht im Snapshot gefunden"
|
|
echo " Verfügbare Snapshots:"
|
|
restic -r "$REPO" snapshots --latest 5
|
|
rm -rf "$TMPDIR"
|
|
exit 1
|
|
fi
|
|
|
|
# Backup der aktuellen DB falls vorhanden
|
|
if [ -f "$RESTORE_TARGET" ]; then
|
|
BACKUP="$RESTORE_TARGET.bak.$(date +%Y%m%d-%H%M%S)"
|
|
cp "$RESTORE_TARGET" "$BACKUP"
|
|
echo "📦 Aktuelle DB gesichert: $BACKUP"
|
|
fi
|
|
|
|
mkdir -p "$(dirname "$RESTORE_TARGET")"
|
|
mv "$RESTORED" "$RESTORE_TARGET"
|
|
rm -rf "$TMPDIR"
|
|
|
|
SIZE=$(ls -lh "$RESTORE_TARGET" | awk '{print $5}')
|
|
echo "✅ tracker.db restored ($SIZE)"
|
|
echo ""
|
|
echo "Alternativ direkt vom Production-Server:"
|
|
echo " ssh vserver 'docker cp antragstracker-hagen:/app/data/tracker.db /tmp/tracker-export.db && cat /tmp/tracker-export.db' > data/tracker.db"
|