69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="/opt/hx-ki"
|
|
DIR="$ROOT/com2-stack"
|
|
COMPOSE_DST="$DIR/docker-compose.yml"
|
|
NET="hxki-internal"
|
|
TS="$(date +%Y%m%d-%H%M%S)"
|
|
BK="$ROOT/backups/com2-original-restore-$TS"
|
|
|
|
mkdir -p "$BK"
|
|
echo "=== COM2 · RESTORE ORIGINAL STATE (one-shot, no guessing) ==="
|
|
echo "DST compose: $COMPOSE_DST"
|
|
echo "Backup: $BK"
|
|
echo
|
|
|
|
[ -f "$COMPOSE_DST" ] || { echo "FAIL: missing $COMPOSE_DST"; exit 1; }
|
|
cp -a "$COMPOSE_DST" "$BK/docker-compose.yml.pre" || true
|
|
|
|
echo "[1] Suche Compose-Quelle mit hxki-web (ohne Raten)…"
|
|
pick_src() {
|
|
# COM2 Backups (neueste zuerst)
|
|
for f in $(ls -1t /opt/hx-ki/com2-stack/docker-compose.yml.bak.* 2>/dev/null); do
|
|
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
|
|
done
|
|
# COM1 compose + backups
|
|
for f in /opt/hx-ki/com-stack/docker-compose.yml /opt/hx-ki/com-stack/docker-compose.yml.bak.*; do
|
|
[ -f "$f" ] || continue
|
|
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
|
|
done
|
|
# docker Backups
|
|
for f in /opt/hx-ki/docker/docker-compose.yml*; do
|
|
[ -f "$f" ] || continue
|
|
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
|
|
done
|
|
return 1
|
|
}
|
|
|
|
SRC="$(pick_src || true)"
|
|
[ -n "${SRC:-}" ] || { echo "FAIL: keine Compose-Quelle mit hxki-web gefunden"; exit 1; }
|
|
|
|
echo "OK: SRC=$SRC"
|
|
cp -a "$SRC" "$BK/docker-compose.source.used"
|
|
cp -a "$SRC" "$COMPOSE_DST"
|
|
|
|
echo "[2] hxki-internal als external sicherstellen (nur ergänzen, nichts raten)"
|
|
docker network inspect "$NET" >/dev/null 2>&1 || docker network create "$NET" >/dev/null
|
|
|
|
# Falls am Ende kein networks:-Block existiert: minimal anhängen
|
|
if ! grep -qE '^networks:' "$COMPOSE_DST"; then
|
|
cat >> "$COMPOSE_DST" <<NETS
|
|
|
|
networks:
|
|
hxki-internal:
|
|
external: true
|
|
NETS
|
|
else
|
|
# Wenn networks existiert, aber hxki-internal nicht: minimal ergänzen
|
|
if ! grep -qE '^[[:space:]]{2}hxki-internal:' "$COMPOSE_DST"; then
|
|
echo "WARN: networks: existiert, aber hxki-internal fehlt -> bitte manuell prüfen (ich ändere hier nicht kreativ)."
|
|
fi
|
|
fi
|
|
|
|
echo "[3] Validate compose"
|
|
docker compose -f "$COMPOSE_DST" config >/dev/null
|
|
echo "OK: compose valid"
|
|
|
|
echo "DONE. Backup: $BK"
|