81 lines
1.7 KiB
Bash
81 lines
1.7 KiB
Bash
#!/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
|
||
|
||
# WICHTIG:
|
||
# - KEIN SSH_USER in der config. Der User soll immer der sein, der das Script startet.
|
||
# - config bleibt rein statisch (NAS/Keys/Pfade/Retention), ohne Laufzeit-Variablen.
|
||
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-<hostname>
|
||
|
||
# ---------- 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}/<hostname>/
|
||
|
||
# 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."
|
||
echo "Setup OK."
|
||
echo "Config: $SCRIPT_DIR/config.sh"
|
||
echo "Log: $LOG_FILE"
|