Files
vendoo/scripts/docker-restore.sh
T
Masterluke77andGitHub 6f48827f4d Vendoo 1.41.2 – Git Ignore Boundary & Module Tracking Hotfix (#18)
* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix

* fix: track native source modules with root-anchored runtime ignores
2026-07-09 17:09:00 +02:00

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."