Backup con Borg
2024-10-13
Borgbackup
In Debian e derivate, installare il pacchetto col comando:
apt install borgbackup -y
Inizializzazione del repository
Per inizializzare il repository, criptato tramite una password:
borg init --encryption=keyfile /path/to/repo
Esportazione e importazione della chiave
Un backup borg senza chiave di crittografia è solo un insieme di dati casuali senza alcuna possibilità di recupero. Se la chiave di crittografia non viene correttamente esportata e archiviata, un guasto della macchina renderebbe inutilizzabile il backup. Per eseguire l’export: borg key export /path/to/repo borg_encrypted_key_backup.txt
.
Maggiori informazioni: borg key export
Per importare le chiavi di crittografia: borg key import /path/to/repo /path/to/keyfile
Queste chiavi si trovano comunque in ~/.config/borg/keys/
.
Backup
Per eseguire un backup manualmente
borg create --stats --list --progress /path/to/repo::25-11-2023 /path/to/source/
dove --stats
permette di visualizzare statistiche aggiuntive sull’archivio, mentre l’opzione --list
di visualizzare la lista degli oggetti inseriti nell’archivio.
Col flag --compression
è possibile impostare anche il livello di compressione. Vedere: Backup compression
È possibile anche visualizzare la lista dei backup:
borg list /path/to/repo
Montare l’archivio
mkdir /tmp/borg/
borg mount /path/to/repo /tmp/borg/
ls -l /tmp/borg/
Retention
Col comando borg prune
è possibile stabilire una politica di conservazione dei backup (https://borgbackup.readthedocs.io/en/stable/usage/prune.html)
Ad esempio:
# Keep 7 end of day, 4 additional end of week archives, and an end of month archive for every month:
borg prune --list --stats --force --keep-daily=7 --keep-weekly=4 --keep-monthly=-1 /path/to/repo
borg prune -v /path/to/repo --stats \
--keep-hourly=12 --keep-daily=60 --keep-weekly=12 --keep-monthly=24
Restore
Per ripristinare un intero backup nella cartella corrente:
borg extract -v --list /path/to/repo/::25-11-2023
Se invece volessimo estrarre solo alcuni file o cartelle, innanzitutto creiamo una cartella temporanea dove verrà montato il repository:
mkdir /tmp/borg/
Montare quindi il repository, che puo’ essere anche remoto:
borg mount ssh_host:path/to/repo/ /tmp/borg/
Listare il contenuto col comando:
borg list ssh_host:path/to/repo/::"08:00_06-10-2024"
Estrarre il contenuto, in modo da ripristinare i file:
borg extract sh_host:path/to/repo/::"08:00_06-10-2024" /mnt/
dove /mnt/
indica la cartella (o il file) da estrarre. L’opzione --dry-run
permette di vedere cosa verrebbe estratto, ma senza che sia veramente estratto.
Nota Attualmente, extract scrive sempre nella directory di lavoro corrente (“.”), quindi assicuratevi di essere nel posto giusto prima di eseguire borg extract
Ulteriori esempi:
# Extract entire archive
borg extract /path/to/repo::my-files
# Extract entire archive and list files while processing
borg extract --list /path/to/repo::my-files
# Verify whether an archive could be successfully extracted, but do not write files to disk
borg extract --dry-run /path/to/repo::my-files
# Extract the "src" directory
borg extract /path/to/repo::my-files home/USERNAME/src
# Extract the "src" directory but exclude object files
borg extract /path/to/repo::my-files home/USERNAME/src --exclude '*.o'