85 lines
2.4 KiB
Bash
Executable File
85 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
########## KONFIG ##########
|
|
BACKUP_ROOT="/var/backups/fullserver"
|
|
|
|
PGHOST="localhost"
|
|
PGPORT="5432"
|
|
PGUSER="florian"
|
|
PGDATABASE="oqtane"
|
|
|
|
# Wohin die Dateien von oqtane.server gehören
|
|
OQTANE_DIR="/home/konstantin/oqtane.framework/oqtane.server"
|
|
|
|
########## BACKUP-ORDNER AUSWÄHLEN ##########
|
|
# Aufruf: ./restore-backup.sh [oqtane_TIMESTAMP]
|
|
# Ohne Argument -> neuestes Backup verwenden
|
|
|
|
if [[ $# -ge 1 ]]; then
|
|
BACKUP_SUBDIR="$1"
|
|
else
|
|
BACKUP_SUBDIR="$(ls -1 "${BACKUP_ROOT}" | sort | tail -n 1)"
|
|
fi
|
|
|
|
BACKUP_DIR="${BACKUP_ROOT}/${BACKUP_SUBDIR}"
|
|
|
|
if [[ ! -d "$BACKUP_DIR" ]]; then
|
|
echo "Backup-Verzeichnis nicht gefunden: $BACKUP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
DUMP_FILE="${BACKUP_DIR}/db_${PGDATABASE}.dump"
|
|
FILES_ARCHIVE="${BACKUP_DIR}/oqtane_files.tar.gz"
|
|
|
|
if [[ ! -f "$DUMP_FILE" ]]; then
|
|
echo "Dump-Datei nicht gefunden: $DUMP_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Verwende Backup: $BACKUP_DIR"
|
|
echo
|
|
|
|
########## WARNUNG ##########
|
|
echo "ACHTUNG:"
|
|
echo " - Die Datenbank '${PGDATABASE}' wird GELÖSCHT und aus dem Backup neu erstellt."
|
|
echo " - Der Ordner '${OQTANE_DIR}' wird mit den Dateien aus dem Backup überschrieben (Status aus dem Archiv)."
|
|
echo
|
|
read -rp "Fortfahren? (ja/nein): " answer
|
|
if [[ "$answer" != "ja" ]]; then
|
|
echo "Abgebrochen."
|
|
exit 0
|
|
fi
|
|
|
|
########## 1) DATENBANK WIEDERHERSTELLEN ##########
|
|
echo "[DB] Versuche, bestehende Datenbank zu droppen (falls vorhanden)…"
|
|
dropdb -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" "$PGDATABASE" 2>/dev/null || echo "[DB] Datenbank existierte nicht, ok."
|
|
|
|
echo "[DB] Neue leere Datenbank anlegen…"
|
|
createdb -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" "$PGDATABASE"
|
|
|
|
echo "[DB] Backup-Dump einspielen…"
|
|
pg_restore -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" \
|
|
-d "$PGDATABASE" -c "$DUMP_FILE"
|
|
|
|
echo "[DB] Datenbank-Restore abgeschlossen."
|
|
echo
|
|
|
|
########## 2) DATEIEN VON OQTANE.SERVER WIEDERHERSTELLEN ##########
|
|
if [[ -f "$FILES_ARCHIVE" ]]; then
|
|
echo "[FILES] Sicherung des aktuellen Oqtane-Ordners…"
|
|
if [[ -d "$OQTANE_DIR" ]]; then
|
|
mv "$OQTANE_DIR" "${OQTANE_DIR}.old.$(date +%s)"
|
|
fi
|
|
|
|
echo "[FILES] Entpacke ${FILES_ARCHIVE}…"
|
|
tar -xvpzf "$FILES_ARCHIVE"
|
|
|
|
echo "[FILES] Dateien-Restore abgeschlossen."
|
|
else
|
|
echo "[FILES] Archiv ${FILES_ARCHIVE} nicht gefunden, überspringe Dateirestore."
|
|
fi
|
|
|
|
echo
|
|
echo "Restore vollständig abgeschlossen."
|