====== Skripte ======
Der Restore‑Prozess wird durch zwei Skripte realisiert die im Verzeichnis //**/usr/local/bin/**// liegen. Das Skript **run_dokuwiki_restore.sh** wird vom //Administrator// manuell ausgeführt. Es listet die maximal drei zuletzt erstellten Sicherungen auf, aus denen der //Administrator// die gewünschte Wiederherstellungsversion auswählt.
Anschließend ruft **run_dokuwiki_restore.sh** das Skript //**dokuwiki_restore.sh**// mit den entsprechenden Parametern auf. Dieses stellt daraufhin die Konfiguration, die Daten sowie die Datenbank vollständig aus dem gewählten Backup wieder her.
Das Skript **run_dokuwiki_restore.sh**, welches vom //Administrator// aufgerufen wird.
#!/bin/bash
BACKUP_BASE="/mnt/backupUSB/backup/dokuwiki"
SCRIPT="/usr/local/bin/dokuwiki_restore.sh"
# Sicherungsverzeichnisse (max. 3)
mapfile -t BACKUPS < <(find "$BACKUP_BASE" -maxdepth 1 -mindepth 1 -type d | sort | head -n 3)
if [ ${#BACKUPS[@]} -eq 0 ]; then
echo "Keine Sicherungsstände gefunden."
exit 1
fi
echo "Verfügbare Sicherungsstände:"
i=1
for b in "${BACKUPS[@]}"; do
echo " $i) $(basename "$b")"
((i++))
done
read -p "Bitte Sicherungsstand wählen (1-${#BACKUPS[@]}): " CHOICE
if ! [[ "$CHOICE" =~ ^[1-3]$ ]] || [ "$CHOICE" -gt ${#BACKUPS[@]} ]; then
echo "Ungültige Auswahl."
exit 1
fi
SELECTED="${BACKUPS[$((CHOICE-1))]}"
BASENAME="$(basename "$SELECTED")"
CONFIG_FILE="$SELECTED/dokuwiki_config_${BASENAME}.tar.gz"
DATA_FILE="$SELECTED/dokuwiki_data_${BASENAME}.tar.gz"
echo "Starte Restore mit:"
echo " CONFIG: $CONFIG_FILE"
echo " DATA: $DATA_FILE"
echo
"$SCRIPT" "$CONFIG_FILE" "$DATA_FILE"
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "Restore erfolgreich."
else
echo "Restore fehlgeschlagen mit Exit-Code $EXIT_CODE."
fi
Das Skript **dokuwiki_restore.sh**, welches vom Skript //**run_dokuwiki_restore.sh**// aufgerufen wird.
#!/bin/bash
# Überprüfen, ob alle erforderlichen Parameter übergeben wurden
if [ "$#" -ne 2 ]; then
echo "Usage: $0 "
exit 1
fi
# Parameter zuweisen
CONFIG_BACKUP_FILE=$1
DATA_BACKUP_FILE=$2
# Verzeichnisse
CONFIG_DIR="/var/www/dokuwiki/conf"
DATA_DIR="/mnt/dataSSD/dokuwiki/data"
# Sicherstellen, dass die Backup-Dateien existieren
if [ ! -f "$CONFIG_BACKUP_FILE" ]; then
echo "Konfigurations-Backup-Datei nicht gefunden: $CONFIG_BACKUP_FILE"
exit 1
fi
if [ ! -f "$DATA_BACKUP_FILE" ]; then
echo "Daten-Backup-Datei nicht gefunden: $DATA_BACKUP_FILE"
exit 1
fi
# DokuWiki in den Wartungsmodus versetzen (falls unterstützt)
# Hier ein Beispiel, wie man eine Wartungsseite anzeigen könnte
echo "DokuWiki in den Wartungsmodus versetzen..."
touch /var/www/dokuwiki/data/pages/maintenance.txt
# Konfiguration zurückspielen
tar -xzf $CONFIG_BACKUP_FILE -C $CONFIG_DIR
# Daten zurückspielen
tar -xzf $DATA_BACKUP_FILE -C $DATA_DIR
# Wartungsmodus deaktivieren
echo "Wartungsmodus deaktivieren..."
rm /var/www/dokuwiki/data/pages/maintenance.txt
echo "Backup erfolgreich zurückgespielt."
exit 0