#!/usr/bin/env bash set -Eeuo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" APP="raspi-backup" STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/${APP}" LOG_FILE="${STATE_DIR}/${APP}.log" mkdir -p "$STATE_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE" >/dev/null } write_config_if_missing() { local cfg="$SCRIPT_DIR/config.sh" if [[ -f "$cfg" ]]; then log "config.sh existiert: $cfg" return 0 fi cat >"$cfg" <<'EOF' #!/usr/bin/env bash # zentrale Konfig (auto-generated) – bitte nur ändern wenn du willst. # NAS Fixwerte NAS_HOST="10.0.0.101" NAS_USER="mexx" NAS_PORT="222" # SSH / Alias KEY_TYPE="ed25519" ALIAS_PREFIX="nas" # Alias wird: nas- # lokaler User, dem der SSH-Key gehört (NICHT root) SSH_USER="admin" # ---------- NAS Pfade (deine Vorgaben) ---------- # Zugriffskontrolle (Keys): NAS_AUTH_KEYS_FILE="/var/services/homes/mexx/raspberry/sshkeys/authorized_keys" # Backups (Daten): NAS_BACKUP_BASE="/volume1/homes/mexx/raspberry/backup" # Remote Ziel wird dann: ${NAS_BACKUP_BASE}// # Retention (Tage) KEEP_DAYS="21" # Excludes EXCLUDES=( "/dev/*" "/proc/*" "/sys/*" "/tmp/*" "/run/*" "/mnt/*" "/media/*" "/lost+found" "/var/cache/apt/archives/*" ) # Rsync Extras RSYNC_EXTRA=( "--partial" "--partial-dir=.rsync-partial" ) EOF chmod +x "$cfg" || true log "config.sh erzeugt: $cfg" } write_config_if_missing log "Setup OK (ohne lib.sh)." echo "Setup OK." echo "Config: $SCRIPT_DIR/config.sh" echo "Log: $LOG_FILE"