Borg Backup (o Borg in breve) è una soluzione Open Source, completamente gratuita e altamente performante per il backup dei dati. Esistono altre soluzioni di backup per Linux, ma Borg ha tutte le funzionalità che ci aspetteremmo da un software di backup, come crittografia, compressione e deduplicazione. Queste funzionalità consentono di utilizzare al meglio lo spazio di archiviazione disponibile, riducendo significativamente i costi di archiviazione.
Prerequisiti
I comandi presenti in questo tutorial sono riferiti all’utilizzo di una macchina Ubuntu 22.04. Con i dovuti adattamenti, può essere utilizzato come spunto anche per installare e configurare Borg su macchine basate su *BSD o macOS recenti.
Seppur sia possibile utilizzare come repository per i backup eseguiti da Borg un proprio server con SSH abilitato, in questo esempio utilizzo BorgBase.com, un servizio a pagamento che offre un primo piano gratuito con 10 GB di spazio. Altri provider sono eventualmente disponibili a questo link.
Step 1 - Installazione di Borg
Ho trovato in diverse guide indicato come metodo di installazione di default l’utilizzo di PIP. In termini assoluti è un’opzione possibile, ma nel caso il package manager della propria distribuzione metta a disposizione Borg, suggerisco di utilizzare quello. La ragione è semplicemente questa: https://unix.stackexchange.com/a/734798/599159
apt install borgbackup
Step 2 - Creazione di una SSH Key per l'autenticazione
Questo passaggio è fondamentale in quanto ci permette di collegare in modo sicuro la macchina oggetto di backup al repository remoto utilizzando una chiave SSH.
Iniziamo generando una coppia di chiavi pubblica-privata basata sullo standard Ed25519 (attualmente) più sicuro. Lanciamo quindi il comando:
$ ssh-keygen -o -a 100 -t ed25519
Questo chiederà la posizione in cui salvare la chiave e una password. Se si desidera schedulare backup automatici con Borg, si consiglia di non impostare alcuna password per la chiave SSH. In alternativa, se si vuole impostare una password per la chiave SSH, questa sarà necessario memorizzarla nel keyring della propria macchina oggetto di backup.
Una volta eseguito il comando, avremo a disposizione una chiave privata ed una chiave pubblica. La chiave privata deve ovviamente rimanere segreta e memorizzata sul proprio computer locale. La chiave pubblica la copiamo su BorgBase, il nostro repository di backup remoto. Visualizziamo la chiave pubblica usando questo comando:
cat ~/.ssh/id_ed25519.pub
Colleghiamoci al nostro account BorgBase.com ed andiamo nella sezione SSH KEYS -> ADD KEY
Incolliamo quindi la nostra chiave SSH publica
Step 3 - Connettersi al repository remoto
Dopo aver aggiunto la chiave pubblica, siamo pronti per configurare un repository remoto. Su BorgBase, possiamo aggiungerlo da REPOSITORIES -> NEW REPO
. Verranno richiesti quindi il nome del repository, la quota e la chiave SSH da utilizzare. Tra le opzioni aggiuntive si può inoltre scegliere se posizionare il repository negli Stati Uniti o nell’UE.
Dopo aver aggiunto il repository, puoi copiare la posizione del repository utilizzando l’icona nella prima colonna Nome.
Step 4 - Inizializzare il repository
Dopo aver configurato la connessione sicura al nostro repository via chiave SSH, possiamo iniziare a usarlo. Il primo passo è inizializzarlo e ciò comporta l’impostazione di una modalità di crittografia e di una password.
Borg supporta diverse modalità di crittografia, ma quella consigliata varia a seconda della versione. repokey
significa che la chiave di crittografia è protetta da una password e archiviata nel repository di backup remoto. Esiste anche la modalità keyfile
che memorizza il file di chiavi nella cartella home. È importante sapere che per accedere a un repository sono necessari sia il file di chiavi che la password. Quindi, se per esempio si perdesse accesso alla macchina oggetto di backup su cui è memorizzato il keyfile, non si potrà accedere al backup. Ecco perché è importante utilizzare la modalità repokey o conservare una copia del file di chiavi da qualche altra parte.
Per inizializzare il repository remoto, utilizziamo i seguenti comandi sostituendo l’URL ssh://
con l’indirizzo effettivo completo del repository fornito nel pannello di controllo. L’URL del repository verrà mantenuto come variabile BORG_REPO
per evitare di digitarlo ogni volta.
Borg 1.x
export BORG_REPO=ssh://...
borg init -e repokey-blake2
Borg 2.x
export BORG_REPO=ssh://...
borg benchmark cpu # optional: find fastest encryption algorithm
borg rcreate --encryption=repokey-blake2-aes-ocb
Documenti
lanciando questo comando: Borg 1.x
borg create ::my-archive-1 ~/Documents
Borg 2.x
borg create my-archive-1 ~/Documents
my-archive-1
è il nome dello snapshot e può per tanto essere personalizzato a piacere, ma la maggior parte delle persone usa il nome host e un timestamp. Per esempio alessandro-macbook-2024-05-10
. Gli archivi consentono di accedere a diverse versioni dei tuoi file. Ciò può essere utile se un file è stato eliminato per sbaglio o crittografato da un cryptolocker.