Files
raspi-backup/01_setup.sh
2025-12-30 23:51:43 +01:00

81 lines
1.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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"