proxmox-backup-helper/backup.sh

51 lines
1.6 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"
# ==============================================================================
# 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