BorgBackup, spesso chiamato semplicemente Borg, è un programma di backup deduplicato, compresso e crittografato per sistemi Unix-like (Linux, macOS, BSD). È progettato per essere efficiente, sicuro e flessibile, ideale per backup incrementali e archiviazione a lungo termine (cfr. Backup questi sconosciuti). Ovviamente non serve ricordare che il Backup è obbligatorio per legge in caso di trattamento dati di terzi ed l'unico strumento che ti mette al riparo da Malware, attacchi Ramsomware e rotture hardware.
Come funziona tecnicamente
Borg non è un semplice strumento di copia: è un sistema di backup fondato su tre pilastri tecnici che lavorano insieme. Borg è terribilmente efficiente.
1. Deduplicazione a livello di chunk
Quando crei un archivio, Borg non copia i file interi: li suddivide in blocchi di dati chiamati chunk, tipicamente di qualche kilobyte. Ogni chunk viene identificato da un hash crittografico (BLAKE2b o SHA-256). Se un chunk con lo stesso hash è già presente nel repository, non viene riscritto: viene semplicemente referenziato.
Il risultato pratico è notevole: modificare un file da 2 GB cambiandone solo poche righe produrrà un backup aggiuntivo di pochi kilobyte, non di 2 GB. Questo vale anche tra file diversi che condividono porzioni di contenuto (ad esempio, VM o database con blocchi comuni).
2. Compressione adattiva
Dopo la deduplicazione, ogni chunk viene compresso prima di essere scritto su disco. Borg supporta diversi algoritmi: lz4 (velocissimo, compressione moderata), zstd (ottimo bilanciamento, raccomandato), zlib e lzma (massima compressione, più lento). È possibile specificare il livello di compressione o usare auto per lasciare che Borg scelga caso per caso.
3. Crittografia end-to-end
I dati vengono crittografati prima di lasciare la macchina locale, con AES-256 in modalità CTR e autenticazione tramite HMAC-SHA256 o BLAKE2b-MAC. Questo significa che anche il server remoto che ospita il repository non può leggere i tuoi dati. La chiave può essere protetta da una passphrase.
Le modalità di crittografia disponibili sono: none, authenticated, repokey (chiave nel repo, consigliata per uso locale), keyfile (chiave solo sul client, obbligatoria se il server è untrusted).
4. Struttura del repository e degli archivi
Un repository Borg è una directory che contiene tutti i dati deduplicati, gli indici e i metadati. All'interno di un repository possono coesistere decine o centinaia di archivi (i singoli backup), ognuno con il proprio nome e timestamp. Grazie alla deduplicazione condivisa tra archivi, il costo aggiuntivo di ogni backup successivo è minimo.
Installazione
Ricordando sempre che la fondo principale per fare un buon lavoro non è ChatGPT (e nemmo questo articolo) ma la documentazione ufficiale del progetto reperibile qui: https://borgbackup.readthedocs.io/en/stable/
Borg è disponibile nei repository ufficiali delle principali distribuzioni e su macOS tramite Homebrew. Scegli il metodo più adatto al tuo sistema:
Debian / Ubuntu
$ sudo apt update$ sudo apt install borgbackup
Fedora / RHEL
$ sudo dnf install borgbackup
Per verificare l'installazione
$ borg --version# → borg 1.4.x
Esempio di flusso di lavoro
-
Inizializza un repository:
Il primo passo è sempre creare il repository, scegliendo la modalità di crittografia:
$borg init --encryption=repokey /percorso/al/repository(La chiave di crittografia viene salvata in un file separato.).. gia, una chiave di crittografia nelle vostre mani e non andrà mai persa.
-
Esegui un backup:
Il formato del nome archivio è libero, ma usare la data automatica è una buona pratica:
borg create /percorso/al/repository::nome-archivio-2026-04-04 /percorso/da/backupparead esempio:$ borg create \/var/www /usr
--compression zstd,3 \
--exclude '/home/*/.cache' \
--exclude '/home/*/Downloads' \
--progress \
/mnt/backup/mio-repo::{hostname}-{now:%Y-%m-%d} \
/home /etc
Da notare che in un sistema linux "base" e ben mantenuto nella distribuzione degli archivi, il salvataggio di queste directory è sufficiente per poter ripristinare il sistema. -
Elenca gli archivi e loro info:
$ borg list /percorso/al/repository
$ borg info /mnt/backup/mio-repo::nome-archivio
-
Estrai un file:
$ borg extract /percorso/al/repository::nome-archivio-2026-04-04 percorso/file -
Monta un archivio come file system
Utile per navigare tra i backup senza estrarre tutto:
$ borg mount /mnt/backup/mio-repo /tmp/borg-mount
$ ls /tmp/borg-mount # naviga liberamente
$ borg umount /tmp/borg-mount -
Pulizia automatica (prune)
Con borg prune si definisce una politica di retention che elimina automaticamente gli archivi più vecchi:
$ borg prune \--keep-daily 7 \--keep-weekly 4 \--keep-monthly 6 \/mnt/backup/mio-repoConsiglio: combina sempre borg prune con borg compact per liberare effettivamente lo spazio su disco dopo l'eliminazione degli archivi.
Vantaggi
- Efficienza: Risparmio di spazio grazie a deduplicazione e compressione.
- Sicurezza: Crittografia end-to-end con chiave in mano all'utente (e non a Meta o Amazon) e verifica dell'integrità dei dati con $ borg check
- Flessibilità: Supporto per backup incrementali, montaggio come filesystem, gestione avanzata dei repository.
- Sovrano: Completamente open source, nessuna dipendenza da servizi cloud proprietari
Limiti
- lock-in relativo: Per leggere i backup occorre sempre e comunque Borg. Che però essendo open source non potrà mai scomparire
- Assenza di GUI: esiste Vorta, ma in linea di massima si fa tutto da linea di comando nel terminale (è anche un pregio pensando ai server)
- Windows: non previsto natviamente lato server (sinceramente non ne sento la mancanza)
- Curva di apprendimento ripida: inizialmente più ripida rispetto ad altri sistemi come rsysnc, duplicati etc..
La documentazione ufficiale fornisce istruzioni dettagliate per ogni sistema operativo.
