65 lines
2.1 KiB
Bash
Executable File
65 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Stellt ein Backup wieder her.
|
|
#
|
|
# ./restore.sh backups/unifi-full-backup_XXXX.tar.gz
|
|
# Komplett-Restore: stoppt die Container, ersetzt ./data durch den
|
|
# Stand aus dem Archiv und startet die Container wieder.
|
|
#
|
|
# ./restore.sh backups/autobackup_XXXX/datei.unf
|
|
# Legt die .unf-Datei in den Autobackup-Ordner der UniFi-App, sodass sie
|
|
# in der Weboberfläche unter Einstellungen -> System -> Backups
|
|
# ausgewählt und wiederhergestellt werden kann.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "Aufruf: $0 <backup-datei>"
|
|
echo " z.B.: $0 backups/unifi-full-backup_2026-07-26_20-00-00.tar.gz"
|
|
echo " oder: $0 backups/autobackup_2026-07-26_20-00-00/autobackup_9.1.120.unf"
|
|
exit 1
|
|
fi
|
|
|
|
FILE="$1"
|
|
if [[ ! -f "$FILE" ]]; then
|
|
echo "Datei nicht gefunden: $FILE"
|
|
exit 1
|
|
fi
|
|
|
|
case "$FILE" in
|
|
*.tar.gz)
|
|
echo "ACHTUNG: Das aktuelle ./data-Verzeichnis wird ersetzt!"
|
|
read -r -p "Fortfahren? [j/N] " answer
|
|
[[ "$answer" =~ ^[jJyY]$ ]] || { echo "Abgebrochen."; exit 1; }
|
|
|
|
echo "==> Container stoppen..."
|
|
docker-compose down
|
|
|
|
if [[ -d data ]]; then
|
|
SAFETY="data.vor-restore.$(date +%Y-%m-%d_%H-%M-%S)"
|
|
echo "==> Aktuelles ./data wird aufbewahrt als ./$SAFETY"
|
|
mv data "$SAFETY"
|
|
fi
|
|
|
|
echo "==> Backup entpacken..."
|
|
tar xzf "$FILE"
|
|
|
|
echo "==> Container starten..."
|
|
docker-compose up -d
|
|
echo "==> Fertig. Wenn alles läuft, kann ./$SAFETY gelöscht werden."
|
|
;;
|
|
*.unf)
|
|
DEST="./data/unifi/data/backup/autobackup"
|
|
mkdir -p "$DEST"
|
|
cp "$FILE" "$DEST/"
|
|
echo "==> $(basename "$FILE") wurde nach $DEST kopiert."
|
|
echo "Wiederherstellen in der Weboberfläche:"
|
|
echo " Einstellungen -> System -> Backups -> Wiederherstellen"
|
|
echo "(Bei einer Neuinstallation kann die Datei auch direkt im"
|
|
echo " Einrichtungs-Assistenten unter 'Restore from backup' gewählt werden.)"
|
|
;;
|
|
*)
|
|
echo "Unbekanntes Format. Erwartet: *.tar.gz (Komplett) oder *.unf (UniFi-Backup)"
|
|
exit 1
|
|
;;
|
|
esac
|