Fertiges Backup und Restore Skript
This commit is contained in:
84
restore-script.sh
Executable file
84
restore-script.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user