#!/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" 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)"; } hn="$(host_short)" alias="$(nas_alias)" remote_root="${NAS_BACKUP_BASE%/}/${hn}" echo "== Backup Status ==" echo "Script-Ordner : $SCRIPT_DIR" 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) --" # Zeige die letzten ~25 Zeilen, aber etwas "smart" ab BACKUP START wenn vorhanden if grep -q "BACKUP START" "$LOG_FILE"; then awk ' BEGIN{start=0} /BACKUP START/{start=1} {buf[NR]=$0} END{ # gib die letzten 80 Zeilen aus, aber nur wenn start irgendwann vorkam from = (NR-80>1)?NR-80:1 for(i=from;i<=NR;i++) print buf[i] }' "$LOG_FILE" | tail -n 25 else tail -n 25 "$LOG_FILE" fi echo else echo "Noch kein Log vorhanden." echo fi # NAS Status (ohne Passwort möglich nur wenn Key-Auth passt) echo "-- NAS Check --" echo "Alias (nur Info): $alias" echo "Hinweis: Dieser Status nutzt direkten SSH Host/Port/User. Falls Passwortabfrage kommt, ist Key-Auth noch nicht sauber." echo # Keypfad für SSH_USER hn2="$hn" key_path="$(eval echo "~${SSH_USER}/.ssh/id_${KEY_TYPE}_${hn2}")" 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 "$SSH_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 "$SSH_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 "$SSH_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