#!/usr/bin/env bash set -Eeuo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" CFG="$SCRIPT_DIR/config.sh" [[ -f "$CFG" ]] || { echo "ERROR: config.sh fehlt: $CFG (erst 01_setup.sh ausführen)"; exit 1; } # shellcheck disable=SC1090 source "$CFG" # User, der das Script gestartet hat (auch wenn via sudo) RUN_USER="${SUDO_USER:-$USER}" LOG_FILE="$SCRIPT_DIR/raspi-backup.log" host_short(){ hostname -s 2>/dev/null || hostname 2>/dev/null || echo "raspi"; } nas_alias(){ echo "${ALIAS_PREFIX}-$(host_short)"; } # validate config vars (OHNE SSH_USER) : "${NAS_HOST:?}" "${NAS_USER:?}" "${NAS_PORT:?}" "${NAS_BACKUP_BASE:?}" "${KEY_TYPE:?}" "${ALIAS_PREFIX:?}" hn="$(host_short)" alias="$(nas_alias)" remote_root="${NAS_BACKUP_BASE%/}/${hn}" echo "== Backup Status ==" echo "Script-Ordner : $SCRIPT_DIR" echo "Run user : $RUN_USER" echo "Host : $hn" echo "NAS : ${NAS_USER}@${NAS_HOST}:${NAS_PORT}" echo "Remote Root : $remote_root" echo "Log : $LOG_FILE" echo # Log-Info (letzter Lauf) if [[ -f "$LOG_FILE" ]]; then echo "-- Letzter Log-Block (kurz) --" if grep -q "BACKUP START" "$LOG_FILE"; then tail -n 120 "$LOG_FILE" | tail -n 25 else tail -n 25 "$LOG_FILE" fi echo else echo "Noch kein Log vorhanden." echo fi echo "-- NAS Check --" echo "Alias (nur Info): $alias" echo "Hinweis: Status nutzt direkten SSH Host/Port/User/Key." echo # Keypfad für RUN_USER key_path="$(eval echo "~${RUN_USER}/.ssh/id_${KEY_TYPE}_${hn}")" if [[ ! -f "$key_path" ]]; then echo "Local Key fehlt: $key_path" echo "=> erst 02_setup_ssh.sh ausführen." exit 0 fi SSH_BASE=(ssh -p "$NAS_PORT" -i "$key_path" -o IdentitiesOnly=yes -o BatchMode=yes -o StrictHostKeyChecking=yes -o ConnectTimeout=10 ) # Remote listing if sudo -u "$RUN_USER" "${SSH_BASE[@]}" "${NAS_USER}@${NAS_HOST}" "test -d '$remote_root'" >/dev/null 2>&1; then echo "Remote erreichbar: OK" echo echo "-- Remote Inhalt --" sudo -u "$RUN_USER" "${SSH_BASE[@]}" "${NAS_USER}@${NAS_HOST}" "ls -la '$remote_root' | sed -n '1,40p'" echo echo "-- latest Ziel + Größe (wenn vorhanden) --" sudo -u "$RUN_USER" "${SSH_BASE[@]}" "${NAS_USER}@${NAS_HOST}" \ "if [ -L '$remote_root/latest' ]; then \ echo -n 'latest -> '; readlink '$remote_root/latest' || true; \ echo -n 'Size(latest): '; du -sh '$remote_root/latest' 2>/dev/null || echo 'n/a'; \ else \ echo 'Kein latest Symlink vorhanden.'; \ fi" else echo "Remote erreichbar: FAIL" echo "Check:" echo " - NAS erreichbar? IP/Port" echo " - SSH Key installiert?" echo " - Rechte auf $remote_root" fi