Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:nextcloud:restore:scripte:start

Dies ist eine alte Version des Dokuments!


Skripte

Der Restore‑Prozess wird durch zwei Skripte realisiert. Das Skript run_nextcloud_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_nextcloud_restore.sh das Skript nextcloud_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_nextcloud_restore.sh, welches vom Administrator aufgerufen wird.

#!/bin/bash
 
BACKUP_BASE="/mnt/backupUSB/backup/nextcloud"
SCRIPT="/usr/local/bin/nextcloud_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/gitea_config_${BASENAME}.tar.gz"
DATA_FILE="$SELECTED/gitea_data_${BASENAME}.tar.gz"
DB_FILE="$SELECTED/gitea_db_${BASENAME}.tar.gz"
 
echo "Starte Restore mit:"
echo "  CONFIG: $CONFIG_FILE"
echo "  DATA:   $DATA_FILE"
echo "  DB:     $DB_FILE"
echo
 
"$SCRIPT" "$CONFIG_FILE" "$DATA_FILE" "$DB_FILE"
EXIT_CODE=$?
 
if [ $EXIT_CODE -eq 0 ]; then
    echo "Restore erfolgreich."
else
    echo "Restore fehlgeschlagen mit Exit-Code $EXIT_CODE."
fi

Das Skript nextcloud_restore.sh, welches vom Skript run_nextcloud_restore.sh aufgerufen wird.

#!/bin/bash
 
# Überprüfen, ob alle erforderlichen Parameter übergeben wurden
if [ "$#" -ne 3 ]; then
    echo "Usage: $0 <config_backup_file> <data_backup_file> <db_backup_file>"
    exit 1
fi
 
# Parameter zuweisen
CONFIG_BACKUP_FILE=$1
DATA_BACKUP_FILE=$2
DB_BACKUP_FILE=$3
 
# Verzeichnisse und Datenbank-Details
CONFIG_DIR="/var/www/nextcloud/config"
DATA_DIR="/mnt/dataSSD/nextcloud/data"
DB_NAME="nextcloud_db"
DB_USER="nextcloud_user"
DB_PASS="your_password"
 
# 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
 
if [ ! -f "$DB_BACKUP_FILE" ]; then
    echo "Datenbank-Backup-Datei nicht gefunden: $DB_BACKUP_FILE"
    exit 1
fi
 
# Nextcloud in den Wartungsmodus versetzen
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
 
# Konfiguration zurückspielen
tar -xzf $CONFIG_BACKUP_FILE -C $CONFIG_DIR
 
# Daten zurückspielen
tar -xzf $DATA_BACKUP_FILE -C $DATA_DIR
 
# Datenbank zurückspielen
mysql -u $DB_USER -p$DB_PASS $DB_NAME < $DB_BACKUP_FILE
 
# Nextcloud aus dem Wartungsmodus nehmen
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
 
echo "Backup erfolgreich zurückgespielt."
 
exit 0
server/nextcloud/restore/scripte/start.1779897145.txt.gz · Zuletzt geändert: von 91.115.82.214