#!/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="/etc/proxmox-backup/defaults.exclude" # Create a default exclude file if it doesn't exist if [ ! -f "$EXCLUDE_FILE" ]; then mkdir -p "$(dirname "$EXCLUDE_FILE")" cat << 'EOF' > "$EXCLUDE_FILE" /proc/* /sys/* /dev/* /run/* /tmp/* /mnt/* /media/* /lost+found /var/tmp/* /var/cache/* EOF fi # ============================================================================== # EXECUTION # ============================================================================== echo "Starting Proxmox Backup for ${HOSTNAME}..." EXCLUDE_ARGS=() while IFS= read -r line; do [ -z "$line" ] && continue EXCLUDE_ARGS+=(--exclude "$line") done < "$EXCLUDE_FILE" proxmox-backup-client backup "${BACKUP_LABEL}.pxar:/" \ --keyfile "$ENCRYPTION_KEY_FILE" \ --ns "$BACKUP_NS" \ "${EXCLUDE_ARGS[@]}" echo "Backup completed successfully!"