Published on

Backup automatici di Proxmox con script personalizzati: la mia strategia

Authors
  • avatar
    Name
    Alessandro Iannacone
    Twitter

Fare backup è fondamentale, ma automatizzarli è ciò che fa davvero la differenza. In questo articolo ti mostro come ho configurato un sistema di backup automatico per le mie VM e container LXC su Proxmox, con rotazione, snapshot, e notifiche email.

Tutto è gestito da uno script bash che gira via cron, senza dipendenze esterne.


🎯 Obiettivo

  • Automatizzare i backup giornalieri
  • Includere sia VM che LXC
  • Mantenere una rotazione (es. 7 giorni)
  • Ricevere notifiche via email
  • Tutto su storage secondario (es. disco ZFS, NFS o USB)

🏗️ Ambiente

  • Hypervisor: Proxmox VE 8.x
  • Backup storage: /mnt/backup (montato via NFS o disco locale)
  • Output log: email inviata a [email protected]

🧰 Lo script di backup

Salvo lo script in /root/scripts/backup-proxmox.sh:

#!/bin/bash
# backup-proxmox.sh

BACKUP_DIR="/mnt/backup/proxmox"
LOGFILE="/var/log/backup-proxmox.log"
RETENTION_DAYS=7
DATE=$(date '+%Y-%m-%d_%H-%M-%S')

echo "🔄 Backup Proxmox avviato - $DATE" > "$LOGFILE"

# Esegui il backup per ogni VM/LXC attiva
for VMID in $(qm list | awk 'NR>1 {print $1}'); do
  echo "➡️ Backup VM $VMID" >> "$LOGFILE"
  vzdump $VMID --mode snapshot --compress zstd --storage local --dumpdir "$BACKUP_DIR" >> "$LOGFILE" 2>&1
done

for CTID in $(pct list | awk 'NR>1 {print $1}'); do
  echo "➡️ Backup LXC $CTID" >> "$LOGFILE"
  vzdump $CTID --mode snapshot --compress zstd --storage local --dumpdir "$BACKUP_DIR" >> "$LOGFILE" 2>&1
done

# Pulizia vecchi backup
echo "🧹 Pulizia backup più vecchi di $RETENTION_DAYS giorni" >> "$LOGFILE"
find "$BACKUP_DIR" -type f -name "*.zst" -mtime +$RETENTION_DAYS -delete >> "$LOGFILE" 2>&1

echo "✅ Backup completato - $(date '+%Y-%m-%d_%H-%M-%S')" >> "$LOGFILE"

# Invio log via email
mail -s "Backup Proxmox - $DATE" [email protected] < "$LOGFILE"

🕓 Automazione con cron

Edito il cron di root:

crontab -e

E aggiungo:

0 3 * * * /root/scripts/backup-proxmox.sh

Questo esegue il backup ogni notte alle 03:00.


🧪 Testing

Test manuale:

bash /root/scripts/backup-proxmox.sh

Verifico che:

  • I file .zst siano nella cartella backup
  • L’email con il log venga ricevuta correttamente
  • Il sistema non sia sovraccarico (uso snapshot per velocità)

📦 Dove salvo i backup?

Io utilizzo:

  • NFS montato da NAS → /mnt/backup
  • Oppure disco USB dedicato montato con /etc/fstab
  • Oppure ZFS dataset su disco secondario

Tutti sono validi, basta che il path abbia spazio e accesso in scrittura.


🔐 Sicurezza

  • Lo script è leggibile solo da root
  • Le email sono inviate tramite SMTP relay sicuro (msmtp)
  • I backup possono essere criptati separatamente se servono

✅ Conclusione

Con questo script ho una soluzione leggera e robusta per i backup di Proxmox. Nessun software esterno, solo vzdump, cron e un po’ di bash.

Se ti serve una base per un sistema più avanzato (come upload automatico in cloud o backup incrementali), questo approccio è un ottimo punto di partenza.


💬 Ti serve lo script aggiornato o con crittografia?

Scrivimi pure via email e ti mando la versione completa adattata alla tua infrastruttura.