initial COM2 system snapshot
This commit is contained in:
68
COM2_RESTORE_ORIGINAL_STATE_ONE_SHOT.sh
Executable file
68
COM2_RESTORE_ORIGINAL_STATE_ONE_SHOT.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user