#!/usr/bin/env bash # Vergleicht die Traefik dynamic File-Provider-Dateien aus dem Repo-Spiegel # gegen die produktive Host-Dateiablage. Der Check ist read-only: # rsync laeuft mit --dry-run und schreibt nichts. # # Aufruf-Defaults siehe Variablen unten. Aufruf typischerweise: # bash services/traefik-dynamic-diff.sh # # Exit-Codes: # 0 Repo und Host sind identisch # 1 Drift festgestellt (rsync itemized output auf stdout) # 2 Repo- oder Host-Verzeichnis fehlt # 4 internes Werkzeug fehlt (rsync) set -uo pipefail TRAEFIK_DYNAMIC_REPO_DIR="${TRAEFIK_DYNAMIC_REPO_DIR:-/mnt/user/services/homelab-infra/traefik/dynamic}" TRAEFIK_DYNAMIC_HOST_DIR="${TRAEFIK_DYNAMIC_HOST_DIR:-/mnt/user/appdata/traefik/dynamic}" if ! command -v rsync >/dev/null 2>&1; then echo "traefik-dynamic-diff: missing required command 'rsync'" >&2 exit 4 fi if [ ! -d "$TRAEFIK_DYNAMIC_REPO_DIR" ]; then echo "traefik-dynamic-diff: repo directory not found: $TRAEFIK_DYNAMIC_REPO_DIR" >&2 exit 2 fi if [ ! -d "$TRAEFIK_DYNAMIC_HOST_DIR" ]; then echo "traefik-dynamic-diff: host directory not found: $TRAEFIK_DYNAMIC_HOST_DIR" >&2 exit 2 fi diff_output="$(rsync -rni --checksum --delete \ "$TRAEFIK_DYNAMIC_REPO_DIR"/ \ "$TRAEFIK_DYNAMIC_HOST_DIR"/)" if [ -n "$diff_output" ]; then printf '%s\n' "$diff_output" exit 1 fi exit 0