Files
hx-ki.com2/COM2_RESTORE_ORIGINAL_STATE_ONE_SHOT.sh
2026-03-06 15:22:40 +00:00

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"