47 lines
1.2 KiB
Bash
Executable file
47 lines
1.2 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="/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!"
|