65 lines
1.5 KiB
Bash
65 lines
1.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Restore-Script für Pfandsystem MySQL Datenbank
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
BACKUP_DIR="/root/backups"
|
||
|
|
|
||
|
|
# Prüfe ob Backup-Datei angegeben wurde
|
||
|
|
if [ -z "$1" ]; then
|
||
|
|
echo "❌ Fehler: Keine Backup-Datei angegeben"
|
||
|
|
echo ""
|
||
|
|
echo "Verwendung: ./restore.sh <backup-datei>"
|
||
|
|
echo ""
|
||
|
|
echo "Verfügbare Backups:"
|
||
|
|
ls -lh "$BACKUP_DIR"/pfandsystem_backup_*.sql.gz 2>/dev/null || echo " Keine Backups gefunden"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
BACKUP_FILE="$1"
|
||
|
|
|
||
|
|
# Prüfe ob Backup-Datei existiert
|
||
|
|
if [ ! -f "$BACKUP_FILE" ]; then
|
||
|
|
echo "❌ Fehler: Backup-Datei nicht gefunden: $BACKUP_FILE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "⚠️ WARNUNG: Dieser Vorgang überschreibt die aktuelle Datenbank!"
|
||
|
|
echo "Backup-Datei: $BACKUP_FILE"
|
||
|
|
echo ""
|
||
|
|
read -p "Fortfahren? (yes/no): " CONFIRM
|
||
|
|
|
||
|
|
if [ "$CONFIRM" != "yes" ]; then
|
||
|
|
echo "Abgebrochen."
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "🗄️ Starte Datenbank-Wiederherstellung..."
|
||
|
|
|
||
|
|
# Entpacken falls .gz
|
||
|
|
if [[ "$BACKUP_FILE" == *.gz ]]; then
|
||
|
|
echo "📦 Entpacke Backup..."
|
||
|
|
TEMP_FILE="/tmp/restore_temp.sql"
|
||
|
|
gunzip -c "$BACKUP_FILE" > "$TEMP_FILE"
|
||
|
|
else
|
||
|
|
TEMP_FILE="$BACKUP_FILE"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Datenbank wiederherstellen
|
||
|
|
echo "💾 Importiere Datenbank..."
|
||
|
|
docker exec -i pfandsystem-mysql mysql \
|
||
|
|
-u pfandsystem \
|
||
|
|
-ppfandsystem_secure_password \
|
||
|
|
pfandsystem < "$TEMP_FILE"
|
||
|
|
|
||
|
|
# Temporäre Datei löschen
|
||
|
|
if [[ "$BACKUP_FILE" == *.gz ]]; then
|
||
|
|
rm "$TEMP_FILE"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "✅ Datenbank erfolgreich wiederhergestellt!"
|
||
|
|
echo ""
|
||
|
|
echo "🔄 Container neu starten empfohlen:"
|
||
|
|
echo " docker-compose restart backend"
|