Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

README.md

automatic-proxmox-nas-backup.sh

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.


🇮🇹 Istruzioni in Italiano

🎯 Funzionalità Principali

  • 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) sia active.
  • Backup Gerarchico Proxmox: Esegue backup VM con vzdump con 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).

⚠️ Prerequisiti

Lo script deve essere eseguito sull'Host Proxmox come utente root.

  1. Network Tools: Devono essere installati i comandi:
    • wakeonlan (per accendere il NAS).
    • ssh (per i controlli di stato e lo spegnimento).
    • mail e Postfix/MTA (per l'invio delle email).
  2. Rclone: Installato e configurato (vedi sezione Configurazione Rclone).
  3. Storage Proxmox: Uno storage di tipo NFS o SMB deve essere configurato in Proxmox (chiamato NAS nello script) e indirizzare alla cartella di backup del NAS.
  4. 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).

⚙️ Configurazione Rclone

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 di RCLONE_REMOTE nello script.
  • Selezionare il protocollo corretto per il tuo NAS (es. SFTP).

📝 Sezioni da Modificare nello Script

È 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.

🚀 Esecuzione

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

🇬🇧 English Instructions

🎯 Key Features

  • 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 be active.
  • Hierarchical Proxmox Backup: Runs VM backups using vzdump with 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).

⚠️ Prerequisites

The script must be run on the Proxmox Host as the root user.

  1. Network Tools: The following commands must be installed: wakeonlan, ssh, and mail/Postfix.
  2. Rclone: Must be installed and configured (see Rclone Setup).
  3. Proxmox Storage: An NFS or SMB storage named NAS must be configured in Proxmox and point to the NAS backup location.
  4. SSH Permissions: The Proxmox Host's public SSH key must be copied to the NAS to allow passwordless access (for SSH checks and shutdown).

⚙️ Rclone Setup

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 the RCLONE_REMOTE value in the script.
  • Select the correct protocol for your NAS (e.g., SFTP).

📝 Sections to Modify in the Script

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.

🚀 Execution

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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages