52 lines
No EOL
1.9 KiB
Bash
Executable file
52 lines
No EOL
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck source=backup.env
|
|
source "$SCRIPT_DIR/backup.env"
|
|
|
|
# ==============================================================================
|
|
# CONNECTION CHECK
|
|
# ==============================================================================
|
|
EXCLUDE_FILE="/opt/backup/exclude"
|
|
|
|
fail() {
|
|
echo "check-connection: FAIL: $*" >&2
|
|
exit 1
|
|
}
|
|
|
|
echo "PBS target: ${PBS_SERVER}:${PBS_PORT} datastore=${PBS_DATASTORE} namespace=${BACKUP_NS:-default}"
|
|
echo
|
|
|
|
# 1. Preflight — the files backup.sh itself requires
|
|
[ -s "$ENCRYPTION_KEY_FILE" ] || fail "encryption key not found at $ENCRYPTION_KEY_FILE"
|
|
echo "[ok] encryption key present: $ENCRYPTION_KEY_FILE"
|
|
[ -f "$EXCLUDE_FILE" ] || fail "exclude list not found at $EXCLUDE_FILE"
|
|
echo "[ok] exclude list present: $EXCLUDE_FILE"
|
|
echo
|
|
|
|
# 2. TCP reachability of the PBS server
|
|
if ! timeout 5 bash -c "exec 3<>/dev/tcp/${PBS_SERVER}/${PBS_PORT}" 2>/dev/null; then
|
|
fail "cannot open TCP connection to ${PBS_SERVER}:${PBS_PORT} (hostname resolution or firewall?)"
|
|
fi
|
|
echo "[ok] TCP connection to ${PBS_SERVER}:${PBS_PORT}"
|
|
echo
|
|
|
|
# 3. Authenticated round-trip + namespace existence: list backups in our namespace
|
|
if ! LIST_OUT="$(timeout 30 proxmox-backup-client list --ns "$BACKUP_NS" 2>&1)"; then
|
|
if echo "$LIST_OUT" | grep -q "ENOENT"; then
|
|
fail "namespace '${BACKUP_NS}' does not exist on ${PBS_SERVER} — create it, or point BACKUP_NS at an existing namespace"
|
|
fi
|
|
echo "$LIST_OUT" >&2
|
|
fail "authenticated request failed — check PBS_AUTH_ID / PBS_PASSWORD in backup.env"
|
|
fi
|
|
echo "[ok] authentication + API round-trip to the server (namespace ${BACKUP_NS} exists)"
|
|
if [ -n "$LIST_OUT" ]; then
|
|
echo "existing backups in namespace ${BACKUP_NS}:"
|
|
echo "$LIST_OUT"
|
|
else
|
|
echo " (no backups there yet — the first one has not run)"
|
|
fi
|
|
|
|
echo
|
|
echo "All checks passed. The next backup should succeed." |