Files
raspi-backup/03_verify.sh
2025-12-30 18:37:44 +01:00

60 lines
2.1 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)"
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"
# --- helpers ---
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; }
die(){ log "ERROR: $*"; echo "ERROR: $*" >&2; exit 1; }
need_cmd(){ command -v "$1" >/dev/null 2>&1 || die "Fehlt: $1"; }
need_root(){ [[ "${EUID:-$(id -u)}" -eq 0 ]] || die "Bitte mit sudo starten: sudo $SCRIPT_DIR/03_verify.sh"; }
host_short(){ hostname -s 2>/dev/null || hostname 2>/dev/null || echo "raspi"; }
nas_alias(){ echo "${ALIAS_PREFIX}-$(host_short)"; }
need_root
need_cmd ssh
need_cmd rsync
# validate config vars
: "${NAS_HOST:?}" "${NAS_USER:?}" "${NAS_PORT:?}" "${ALIAS_PREFIX:?}" "${SSH_USER:?}" "${NAS_BACKUP_BASE:?}"
hn="$(host_short)"
alias="$(nas_alias)"
ssh_user="$SSH_USER"
remote_root="${NAS_BACKUP_BASE%/}/${hn}"
log "VERIFY START: alias=${alias} remote_root=${remote_root}"
# optional Port check
if command -v nc >/dev/null 2>&1; then
log "Check NAS Port: ${NAS_HOST}:${NAS_PORT}"
nc -vz "$NAS_HOST" "$NAS_PORT" >/dev/null 2>&1 || die "NAS Port nicht erreichbar: ${NAS_HOST}:${NAS_PORT}"
else
log "nc nicht vorhanden überspringe Port-Check"
fi
# SSH login via alias
log "Check SSH Login: ${alias}"
sudo -u "$ssh_user" ssh -o BatchMode=yes -o ConnectTimeout=10 "$alias" "echo ok" >/dev/null \
|| die "SSH Login über Alias fehlgeschlagen: $alias"
# Remote backup dir
log "Check/Create Remote Backup Dir: ${remote_root}"
sudo -u "$ssh_user" ssh -o BatchMode=yes "$alias" "mkdir -p '$remote_root' && test -d '$remote_root'" >/dev/null \
|| die "Remote Backup Pfad nicht nutzbar: $remote_root"
log "VERIFY OK"
echo "Verify OK:"
echo "- NAS erreichbar (${NAS_HOST}:${NAS_PORT})"
echo "- SSH Alias funktioniert (${alias})"
echo "- Remote Backup Pfad OK (${remote_root})"