News & Blog

Backup con BORG

Backup con BORG

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

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

  2. 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/backuppare
    ad esempio:
    $ borg create \
      --compression zstd,3 \
      --exclude '/home/*/.cache' \
      --exclude '/home/*/Downloads' \
      --progress \
      /mnt/backup/mio-repo::{hostname}-{now:%Y-%m-%d} \
      /home /etc
    /var/www /usr
    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.
  3. Elenca gli archivi e loro info:

    $ borg list /percorso/al/repository
    $ borg info /mnt/backup/mio-repo::nome-archivio
  4. Estrai un file:

    $ borg extract /percorso/al/repository::nome-archivio-2026-04-04 percorso/file

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

  6. 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-repo

    Consiglio: 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.

 

 

Related Articles

Lo studio

Rag. Alessandro Scapuzzi

Piazza Attias, 37 - 57125 Livorno
Piazza Virgilio, 36 57037 Portoferraio (LI

[Mob.] 393 401 3332 [mail] segreteria@scapuzzi.it
[C.F.] SCPLSN70E15E625X - [P.IVA] 01156620492