#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=backup.env source "$SCRIPT_DIR/backup.env" # ============================================================================== # BACKUP-SPECIFIC CONFIGURATION # ============================================================================== BACKUP_LABEL="${HOSTNAME}-root" EXCLUDE_FILE="/opt/backup/exclude" LOG_FILE="${SCRIPT_DIR}/backup.log" # ============================================================================== # EXECUTION # ============================================================================== if [ ! -f "$EXCLUDE_FILE" ]; then echo "error: exclude list not found at $EXCLUDE_FILE — run setup.sh first" >&2 exit 1 fi echo "Starting Proxmox Backup for ${HOSTNAME}..." EXCLUDE_ARGS=() while IFS= read -r line; do [ -z "$line" ] && continue EXCLUDE_ARGS+=(--exclude "$line") done < "$EXCLUDE_FILE" if proxmox-backup-client backup "${BACKUP_LABEL}.pxar:/" \ --keyfile "$ENCRYPTION_KEY_FILE" \ --ns "$BACKUP_NS" \ "${EXCLUDE_ARGS[@]}" 2>&1 | tee "$LOG_FILE"; then echo "Backup completed successfully!" else echo "Backup FAILED — see $LOG_FILE" >&2 if [ -n "${NOTIFY_EMAIL:-}" ]; then { echo "To: $NOTIFY_EMAIL" echo "From: root@${HOSTNAME}" echo "Subject: [pbs-backup] FAILED on ${HOSTNAME}" echo echo "The Proxmox backup on ${HOSTNAME} failed at $(date -R)." echo echo "--- backup log ---" cat "$LOG_FILE" } | sendmail -t fi exit 1 fi