* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix * fix: track native source modules with root-anchored runtime ignores
69 lines
2.2 KiB
Bash
69 lines
2.2 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
verify_sha256() {
|
|
checksum=$1
|
|
directory=$2
|
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
(cd "$directory" && sha256sum -c "$(basename "$checksum")")
|
|
elif command -v shasum >/dev/null 2>&1; then
|
|
(cd "$directory" && shasum -a 256 -c "$(basename "$checksum")")
|
|
else
|
|
echo "[WARN] Weder sha256sum noch shasum verfügbar; Prüfsumme kann nicht geprüft werden." >&2
|
|
fi
|
|
}
|
|
|
|
archive="${1:-}"
|
|
confirm="${2:-}"
|
|
[ -n "$archive" ] && [ -f "$archive" ] || {
|
|
echo "Aufruf: scripts/docker-restore.sh /pfad/vendoo-data.tar.gz --confirm" >&2
|
|
exit 64
|
|
}
|
|
[ "$confirm" = "--confirm" ] || {
|
|
echo "[ABBRUCH] Restore ersetzt die aktuellen Docker-Daten. Erneut mit --confirm aufrufen." >&2
|
|
exit 64
|
|
}
|
|
|
|
archive_dir="$(cd "$(dirname "$archive")" && pwd)"
|
|
archive_name="$(basename "$archive")"
|
|
archive_abs="$archive_dir/$archive_name"
|
|
checksum_file="$archive_abs.sha256"
|
|
|
|
docker compose config -q
|
|
if [ -f "$checksum_file" ]; then
|
|
echo "Prüfe SHA-256 des Restore-Archivs ..."
|
|
verify_sha256 "$checksum_file" "$archive_dir"
|
|
else
|
|
echo "[WARN] Keine Prüfsummendatei $checksum_file gefunden; Archivintegrität kann nicht automatisch bestätigt werden." >&2
|
|
fi
|
|
|
|
echo "Erstelle vor dem Restore ein Sicherheitsbackup ..."
|
|
pre_restore="./vendoo-pre-restore-$(date +%Y%m%d-%H%M%S)"
|
|
"$(dirname "$0")/docker-backup.sh" "$pre_restore"
|
|
|
|
echo "Stoppe Vendoo und stelle die persistenten Daten wieder her ..."
|
|
docker compose stop vendoo
|
|
restart_on_error() {
|
|
code=$?
|
|
if [ "$code" -ne 0 ]; then
|
|
echo "[FEHLER] Restore fehlgeschlagen. Vendoo wird zur Diagnose erneut gestartet." >&2
|
|
docker compose up -d vendoo >/dev/null 2>&1 || true
|
|
fi
|
|
exit "$code"
|
|
}
|
|
trap restart_on_error EXIT INT TERM
|
|
|
|
docker compose run --rm --no-deps --user 0:0 \
|
|
-v "$archive_dir":/input:ro \
|
|
--entrypoint sh vendoo -eu -c \
|
|
'for dir in db uploads backups operations logs config modules; do
|
|
mkdir -p "/app/data/$dir"
|
|
find "/app/data/$dir" -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +
|
|
done
|
|
tar xzf "/input/$1" -C /app/data' sh "$archive_name"
|
|
|
|
trap - EXIT INT TERM
|
|
docker compose up -d vendoo
|
|
echo "Restore eingespielt. Sicherheitsbackup: $pre_restore/vendoo-data.tar.gz"
|
|
echo "Jetzt /readyz, Login, Benutzer, Artikel, Bilder und Operations Center prüfen."
|