Questo script Bash unificato automatizza la sequenza completa di backup per un ambiente Proxmox, gestendo l'accensione di un NAS tramite Wake-on-LAN (WOL), l'attesa dell'attivazione dello storage NFS, l'esecuzione di backup VM tramite vzdump e la sincronizzazione di file critici tramite rclone.
- Wake-on-LAN (WOL): Accende il NAS prima dell'inizio del backup.
- Controlli di Stato Robusti: Attende che il NAS sia online via SSH/NFS e che lo storage di backup Proxmox (denominato
NAS) siaactive. - Backup Gerarchico Proxmox: Esegue backup VM con
vzdumpcon logica di retention (settimanale e mensile). - Sincronizzazione File (rclone): Sincronizza cartelle locali critiche sul NAS, gestendo i file eliminati tramite una cartella Cestino remota (
--backup-dir). - Filtri Avanzati: Include una vasta lista di esclusioni (
--exclude) per metadati, file temporanei e cache di servizi (es. Immich, Syncthing). - Notifiche Email: Invia un log completo del processo tramite Postfix.
- Spegnimento Remoto: Spegne il NAS al completamento (opzionale).
Lo script deve essere eseguito sull'Host Proxmox come utente root.
- Network Tools: Devono essere installati i comandi:
wakeonlan(per accendere il NAS).ssh(per i controlli di stato e lo spegnimento).maile Postfix/MTA (per l'invio delle email).
- Rclone: Installato e configurato (vedi sezione
Configurazione Rclone). - Storage Proxmox: Uno storage di tipo NFS o SMB deve essere configurato in Proxmox (chiamato
NASnello script) e indirizzare alla cartella di backup del NAS. - Permessi SSH: La chiave SSH pubblica dell'Host Proxmox deve essere copiata sul NAS per consentire l'accesso senza password (per i controlli SSH e lo spegnimento).
Prima di eseguire, devi installare e configurare la "remote" di rclone:
curl https://rclone.org/install.sh | sudo bash
rclone config- Scegliere un nome (es.
nas_sftp). Questo nome deve corrispondere al valore diRCLONE_REMOTEnello script. - Selezionare il protocollo corretto per il tuo NAS (es. SFTP).
È necessario personalizzare le seguenti sezioni all'inizio dello script:
| Sezione | Variabili da Modificare | Descrizione |
|---|---|---|
CONFIGURAZIONE EMAIL |
DESTINATARIO_EMAIL |
La tua email per ricevere i log. |
DATI NAS |
MAC_ADDRESS, NAS_IP, NAS_USER |
Dati di rete e credenziali per WOL e SSH. |
RCLONE |
RCLONE_REMOTE, RCLONE_DESTINATION_BASE |
Nome della remote configurata e percorso di destinazione sul NAS. |
SOURCE_DIRS |
Array di percorsi | Cartelle locali su Proxmox da sincronizzare con rclone. |
CONFIGURAZIONE BACKUP |
VMS_TO_BACKUP_WEEKLY, VMS_TO_BACKUP_MONTHLY |
Inserire gli ID numerici delle VM/LXC da backuppare. |
Si consiglia di eseguire lo script tramite cron o systemd-timer in un orario in cui le VM sono meno attive (es. notte fonda).
# Rendi lo script eseguibile
chmod +x /path/to/script/automatic-proxmox-nas-backup.sh
# Esegui (per test)
/path/to/script/automatic-proxmox-nas-backup.sh- Wake-on-LAN (WOL): Wakes up the NAS before starting the backup.
- Robust Status Checks: Waits for the NAS to be online via SSH/NFS and for the Proxmox backup storage (named
NAS) to beactive. - Hierarchical Proxmox Backup: Runs VM backups using
vzdumpwith retention logic (weekly and monthly cycles). - File Synchronization (rclone): Syncs critical local folders to the NAS, managing deleted files using a remote Trash folder (
--backup-dir). - Advanced Filters: Includes extensive exclusion lists (
--exclude) for metadata, temporary files, and service caches (e.g., Immich, Syncthing). - Email Notifications: Sends a full log of the process via Postfix/MTA.
- Remote Shutdown: Shuts down the NAS upon completion (optional).
The script must be run on the Proxmox Host as the root user.
- Network Tools: The following commands must be installed:
wakeonlan,ssh, andmail/Postfix. - Rclone: Must be installed and configured (see
Rclone Setup). - Proxmox Storage: An NFS or SMB storage named
NASmust be configured in Proxmox and point to the NAS backup location. - SSH Permissions: The Proxmox Host's public SSH key must be copied to the NAS to allow passwordless access (for SSH checks and shutdown).
Before running, you must install and configure the rclone "remote":
curl https://rclone.org/install.sh | sudo bash
rclone config- Choose a name (e.g.,
nas_sftp). This name must match theRCLONE_REMOTEvalue in the script. - Select the correct protocol for your NAS (e.g., SFTP).
You must personalize the following sections at the start of the script:
| Section | Variables to Modify | Description |
|---|---|---|
EMAIL CONFIGURATION |
DESTINATARIO_EMAIL |
Your email address to receive logs. |
NAS DATA |
MAC_ADDRESS, NAS_IP, NAS_USER |
Network details and credentials for WOL and SSH. |
RCLONE |
RCLONE_REMOTE, RCLONE_DESTINATION_BASE |
Name of the configured remote and the destination path on the NAS. |
SOURCE_DIRS |
Array of paths | Local folders on Proxmox to be synchronized with rclone. |
BACKUP CONFIGURATION |
VMS_TO_BACKUP_WEEKLY, VMS_TO_BACKUP_MONTHLY |
Enter the numeric IDs of the VMs/LXCs to be backed up. |
It is recommended to run the script via cron or systemd-timer at a time when VMs are less active (e.g., late night).
# Make the script executable
chmod +x /path/to/script/automatic-proxmox-nas-backup.sh
# Execute (for testing)
/path/to/script/automatic-proxmox-nas-backup.sh