Backup con Borg e Borgmatic
Backup con Borg e Borgmatic
Se anche tu sei un self-host compulsivo, la questione dei backup non è una scelta, ma una necessità. Dopo anni di utilizzo e varie prove, su tutti i miei server, utilizzo Borg come software per il backup: non solo è molto affidabile (ho avuto bisogno del restore qualche volta) ma anche straordinariamente semplice da gestire.
In questo articolo ti mostrerò perché questi due software hanno conquistato il mio cuore (e i miei dati), come funzionano e soprattutto come iniziare a usarli nel tuo ambiente self-hosted.
Chi è Borg e Perché Dovresti Usarlo
Borg (BorgBackup) è un software di backup dedicato alla deduplica, compressione e cifratura dei dati. Sviluppato in Python con componenti critici in C, è stato pensato fin dall'inizio per essere veloce, efficiente e sicuro. A differenza di soluzioni più tradizionali, Borg non crea semplici copie dei tuoi file, ma applica una serie di tecniche sofisticate per rendere i backup efficienti e gestibili.
Borgmatic è un'estensione di Borg e permette di configurare il nostro backup attraverso un unico file di configurazione.

Le Tre Caratteristiche che Cambiano il Gioco
Deduplica: Questo è il punto che rende Borg veramente speciale. Immagina di avere 100 GB di dati e di fare un backup ogni giorno. Con i backup tradizionali, finiresti per avere 2.8 TB di dati in un mese (100 GB × 28 giorni). Con Borg, se solo il 5% dei tuoi dati cambia ogni giorno, utilizzerai solo circa 140 GB di spazio totale (100 GB iniziali + 5 GB × 28 giorni). Borg identifica i file identici e i blocchi di dati duplicati, memorizzandoli una sola volta.
Compressione: Borg comprime i dati utilizzando algoritmi come ZSTD, riducendo ulteriormente lo spazio occupato. Un documento di testo compresso può ridursi del 90%, immagini del 20-30%, database del 40-60%. La compressione avviene durante il backup, non dopo, quindi non impatta sulla velocità di accesso ai dati ripristinati.
Cifratura: Tutti i tuoi backup sono cifrati end-to-end con AES-256. Significa che anche se qualcuno riuscisse ad accedere al tuo repository di backup, non potrebbe leggere nulla senza la passphrase. La cifratura viene applicata sia in transito (se usi SSH) che a riposo sul disco.
Grazie a queste tre caratteristiche puoi usare anche un servizio esterno per il tuo backup, cosi avrai i tuoi dati al sicuro in un luogo diverso rispetto a quello di dove girano i tuoi servizi.
Il Vantaggio Decisivo: Point-in-Time Recovery
Tra le molte cose che Borg fa bene, il point-in-time recovery è una capacità che raramente ho visto in altri backup tools gratuiti. Cosa significa? Semplicemente che puoi ripristinare i tuoi dati a qualsiasi punto nel tempo in cui hai eseguito un backup.
Facciamo un esempio concreto. Sei lunedì alle 14:30 e realizzi che un file importante è stato eliminato accidentalmente venerdì scorso. Con Borg, puoi accedere al backup di giovedì mattina alle 08:00 e recuperare esattamente quello che ti serve. Non è "il file è sparito, è perso per sempre", ma "posso scegliere quale versione del mio sistema voglio ripristinare".
Questo funziona perché ogni volta che esegui un backup con Borg, viene creato un "snapshot" completo dello stato del tuo sistema in quel momento. Borg poi usa la deduplica per assicurarsi che lo spazio aggiuntivo necessario sia minimo, ma tu mantieni sempre accesso a qualsiasi versione precedente.
Borg in Pratica: Cosa Devi Sapere
Borg è estremamente flessibile e può essere usato in molti modi diversi. Ecco gli scenari che coprono la maggior parte dei casi d'uso:
Local-to-Local: Il Backup nel Tuo Ufficio
Il caso più semplice è fare il backup dei tuoi dati locali su un disco esterno o su un'altra partizione. È velocissimo e non richiede internet. Il comando base è:
Perfetto per chi vuole un backup fisico nelle vicinanze e non si preoccupa di perdere tutto se la casa prende fuoco (per quello servono i backup remoti).
Self-Hosted: Il Backup su un Altro Server
Questo è il mio setup preferito per il self-hosting. Hai il tuo server principale dove girano Nextcloud, il tuo Git personale, la tua email, quello che vuoi. E hai un secondo server (anche molto meno potente) dove archi i backup.
Borg comunica via SSH e comprime/cifra tutto prima di inviare i dati. Anche se il server di backup venisse compromesso, non potrebbero leggere nulla. Il comando diventa:
Bellissimo, vero? Un server, una passphrase, tutto cifrato. E lo spazio utilizzato è ridicolmente piccolo grazie alla deduplica.
Un Dettaglio Fondamentale: Il Modello Client-Server
C'è una cosa importante da capire se decidi di fare il backup su un server remoto: Borg deve essere installato su entrambe le macchine.
A differenza di altri strumenti che usano il protocollo SFTP o rsync "passivo", Borg utilizza un modello client-server. Quando avvii un backup, il tuo server locale (il client) si connette via SSH al server di destinazione e avvia un'istanza di Borg anche lì (il server).
Perché questa complicazione? In realtà è un enorme vantaggio per due motivi:
- Efficienza: Il server remoto calcola localmente quali pezzi di dati possiede già, evitando di farti inviare file che sono già nel repository.
- Integrità: Il processo remoto verifica che i dati arrivino correttamente e gestisce la scrittura sul disco in modo atomico.
Ad esempio, se stai usando una VPS Debian come destinazione, ricordati di fare un semplice apt install borgbackup, altrimenti il client non saprà con chi parlare e riceverai un errore del tipo Remote: bash: borg: command not found.
Servizi di Terze Parti: Hetzner e Simili
Se non vuoi gestire il tuo server di backup, ci sono servizi come Hetzner Storage Box che offrono spazio di backup a costi molto bassi (qualche euro al mese per TB). Borg lavora perfettamente con loro e mantiene la stessa garanzia di cifratura end-to-end.
Ad esempio, Hetzner (non mi hanno sponsorizzato), offre un servizio molto economico e ben funzionante chiamato storage box: https://www.hetzner.com/storage/storage-box/ (Ci sono pacchetti con vari tagli di spazio disco).
Borg e l'Ecosistema Self-Hosted
Due sistemi che uso hanno adottato Borg come soluzione di backup nativa:
YunoHost: Se usi YunoHost per gestire il tuo server, i backup sono gestiti di default attraverso Borg. L'interfaccia web di YunoHost ti permette di configurare tutto con pochi click. Scegli la destinazione, inserisci i parametri (credenziali e url), e il sistema si occupa di tutto.
Nextcloud AIO (All-in-One): Nextcloud AIO, il modo più moderno di deployare Nextcloud, ha integrato Borg come sistema di backup predefinito. Quando installi Nextcloud AIO, la possibilità di fare backup via Borg è già incorporata. Questo dovrebbe dirvi tutto quello che dovete sapere sulla fiducia che anche i principali progetti ripongono in Borg.
Borgmatic: Quando Borg Diventa Semplice
Borg è fantastico, ma ha una curva di apprendimento. I comandi sono molti, le opzioni sono numerose, e ricordare tutti i parametri ogni volta è difficile. Qui entra in gioco Borgmatic.
Borgmatic è uno strato di semplificazione costruito sopra Borg. È un software che prende un file di configurazione (YAML, molto leggibile) e trasforma complessi flussi di backup in un singolo comando: borgmatic. Non solo, ma Borgmatic aggiunge funzionalità utili come le notifiche, la verifica automatica dei backup, il controllo della salute del repository e molto altro.

Configurare Borgmatic: Un Esempio Pratico
Per iniziare con Borgmatic, installa il pacchetto:
Poi crea la directory di configurazione:
E un file di configurazione di base:
# Configurazione di Borgmatic - salva come ~/.config/borgmatic/config.yaml
source_directories:
- /home/utente/documenti
- /home/utente/progetti
- /etc/
repositories:
- label: backup_principale
path: /mnt/discoesterno/backup
# Se vuoi un backup remoto SSH, usa questo:
# path: ssh://utente@backup.example.com:22/backups/mio_server
retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 12
keep_yearly: 2
checks:
- name: repository
frequency: 2 weeks
- name: archives
frequency: 4 weeks
hooks:
before_backup:
- echo "Inizio backup a $(date)"
after_backup:
- echo "Backup completato con successo"
on_error:
- echo "ERRORE durante il backup!"
Ora, per fare un backup completo, basta eseguire:
Questo comando:
- Effettua il backup di tutti i directory elencati
- Applica la deduplica e la compressione
- Cifra tutto con la tua passphrase
- Applica le politiche di retention (mantiene 7 backup giornalieri, 4 settimanali, etc.)
- Verifica l'integrità del repository secondo il calendario definito
- Esegue gli hook (comando prima e dopo il backup)
Automazione con Cron
Ora che hai configurato Borgmatic, il passo logico è automatizzare il backup. Aggiungi una voce al crontab:
E aggiungi questa riga per eseguire il backup ogni giorno alle 02:00 di notte:
Se vuoi eseguire il backup ogni 6 ore:
Il Superpotere di Borgmatic: I Database
Se gestisci servizi come Nextcloud, Ghost o un qualsiasi stack LAMP/LEMP, sai che salvare i file non basta: devi mettere al sicuro il database. Di solito questo significa scrivere uno script che fa il dump, lo salva in una cartella e poi Borg lo carica.
Borgmatic fa tutto da solo. Può collegarsi ai tuoi database, farne il dump "al volo" e inviarlo direttamente nel repository di backup senza sporcare il disco con file temporanei.
Ecco come aggiungere il supporto per i database nel tuo config.yaml:
# Aggiungi questo al tuo file di configurazione
databases:
- name: nextcloud_db
type: postgresql # o mysql / mariadb / sqlite
username: nextcloud_user
# Se il DB gira in un container, puoi specificarlo qui:
# hostname: localhost
Perché è fondamentale per Nextcloud?
Nextcloud salva i metadati dei file, i contatti, i calendari e le configurazioni nel database. Se ripristini solo la cartella data ma non il database, ti ritroverai con un'istanza "rotta". Con questa configurazione, Borgmatic:
- Blocca (se necessario) e interroga il DB.
- Trasmette il contenuto crittografato al volo.
- Lo include nello stesso "snapshot" dei file.
In caso di disastro, avrai la certezza matematica che i file e il database siano sincronizzati allo stesso identico istante, evitando inconsistenze che sono l'incubo di ogni sysadmin.
Notifiche e Monitoraggio
Una delle feature migliori di Borgmatic è la capacità di avvisarti istantaneamente se un backup fallisce o se è andato a buon fine. Invece di controllare i log ogni mattina, io uso ntfy, un servizio di messaggistica pub-sub semplicissimo (e ovviamente self-hostabile).
Puoi configurare le notifiche direttamente nel tuo config.yaml. Ecco come inviare un messaggio al tuo telefono ogni volta che Borgmatic finisce il suo lavoro:
ntfy:
# L'URL del tuo server ntfy (o quello ufficiale)
topic: il_tuo_topic_segreto
server: https://ntfy.sh
# Invia notifiche solo in caso di errore o sempre?
states:
# Puoi anche aggiungere una priorità diversa in base allo stato
priority: 5
Se invece preferisci usare i classici hooks per personalizzare il messaggio (magari includendo il nome dell'host), puoi fare così:
hooks:
on_error:
- curl -d "❌ Backup fallito su $(hostname)" https://ntfy.sh/il_tuo_topic_segreto
after_backup:
- curl -d "✅ Backup completato con successo su $(hostname)" https://ntfy.sh/il_tuo_topic_segreto
Con l'app di ntfy installata sullo smartphone, riceverai una notifica push in tempo reale. Se non vedi arrivare nulla, allora sai che c'è qualcosa da controllare.
Recuperare i Dati: Quando il Backup Diventa Importante
Tutto questo lavoro di backup è inutile se non puoi effettivamente recuperare i tuoi dati. Con Borg è sorprendentemente semplice.
Per elencare tutti i backup disponibili:
Per elencare i file all'interno di un backup specifico:
Per estrarre un singolo file:
Per ripristinare l'intero backup in una directory temporanea:
La bellezza di Borg è che il ripristino è altrettanto semplice della creazione del backup. Non c'è magia incomprensibile, solo comandi diretti e intuitivi.
Le Limitazioni (Che Non Sono Molte)
Borg è meraviglioso, ma non è perfetto. Vale la pena menzionare un paio di limitazioni:
Innanzitutto, per i database, Borg avrebbe bisogno di un dump preventivo su disco. Fortunatamente, come abbiamo visto, Borgmatic risolve il problema gestendo i dump al volo, ma è sempre bene verificare di avere abbastanza spazio temporaneo per queste operazioni se i database sono mastodontici.
In secondo luogo, la prima esecuzione di un backup remoto è lenta. Se hai 500 GB da inviare al tuo server di backup via SSH, i tempi saranno significativi. Ma i backup successivi saranno enormemente più veloci grazie alla deduplica. La deduplica cross-archive (tra diversi backup) significa che i cambiamenti incrementali sono davvero incrementali.
Infine, il ripristino di backup molto grandi con molti file può essere un po' lento, soprattutto se il repository è su un disco lento. Ma una volta che hai i dati localmente, sei a posto.
Conclusione: Perché Ho Scelto Borg
Negli ultimi anni ho usato Borg su ogni server che amministro. A volte ho dovuto recuperare i dati, e ogni singola volta Borg c'è stato, puntuale e affidabile. Ha sempre ripristinato esattamente quello che mi serviva, senza cerimoniali inutili.
Borg è ciò che mi piace in un software: semplice nei concetti, potente nell'esecuzione, straordinariamente efficiente, e completamente open source. Borgmatic lo rende ancora più accessibile, anche per chi non vuole passare ore a studiare manuali complessi.
Se gestisci un server self-hosted, uno o più personal computer, o semplicemente dati che non puoi permetterti di perdere, Borg e Borgmatic meritano seriamente di essere nella tua cassetta degli attrezzi. Il tempo che dedicherai alla loro configurazione sarà tempo ben speso, e il giorno in cui avrai bisogno di recuperare un file eliminato accidentalmente, ringrazierai te stesso di averlo fatto.
Buon backup!