4.7 KiB
BorgBackup
Utilizzo
Sito ufficiale - Repo (Github) - Demo (Video)
BorgBackup è un software per effettuare backup da terminale (e non solo):
- Deduplicazione dei file invece del classico "copia/incolla"
- Possibilità di crittografia (AES 256-bit) e verifica dei dati (HMAC-SHA256)
- Possibilità di offuscare i dati, in modo da rendere i backup più "sicuri"
- Possibilità di comprimere i dati usando gli algoritmi più conosciuti (LZ4, zlib, LZMA, zstd)
- Possibilità di personalizzare il numero di backup da mantenere (giornalieri, settimanali, mensili, annuali)
- Ottimo supporto della comnunità
Struttura file e cartelle
/home/
├── borg/
│ ├── docker_backup/
│ ├── borg_backup.sh
│ └── borg_backup.log
│
└── docker/
├── container #1
├── container #2
├── ...
docker_backup
- cartella dove vengono salvati i backup da borgborg_backup.sh
- bash script per effettuare i backupborg_backup.log
- file di log con le date dei backup
N.B. Tutti i file e le cartelle devono essere creati a mano.
Setup
Installare BorgBackup
Normalmente si trova già in molti package manager delle distro linux/unix più usate.
Creare e inizializzare una nuova cartella per i backup
mkdir /home/borg
borg init --encryption=none /home/borg/docker_backup
Notare l'assenza dell'uso del comando sudo
. In caso di problemi con i permessi di scrittura/lettura usatelo.
Bash script
Lo script deve avere la flag executable (eseguibile), nel caso lanciate il comando chmod +x borg_backup.sh
tanto è indolore.
borg_backup.sh
#!/bin/bash
# LO SCRIPT MANTIENE IL SEGUENTE NUMERO DI BACKUP:
# GIORNALIERI = 7 aka 1 settimana
# SETTIMANALI = 4 aka 1 mese
# MENSILI = 6 aka 6 mesi
# ANNUALI = 0
# -----------------------------------------------
DIRECTORIES='/home/docker'
BACKUP='/home/borg/docker_backup'
LOGFILE='/home/borg/borg_backup.log'
NOW=$(date +"%Y-%m-%d | %H:%M | ")
echo "$NOW - Avvio del Backup e della Pulizia" >> $LOGFILE
# CREA NUOVI BACKUP NELLA CARTELLA IMPOSTATA
borg create \
$BACKUP::'{now:%s}' \
$DIRECTORIES \
\
--compression zstd \
--one-file-system \
--exclude-caches \
--exclude-if-present '.nobackup' \
# CANCELLA I VECCHI BACKUP, SE NECESSARIO
borg prune -v --list $BACKUP \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--keep-yearly=0 \
echo "$NOW Done" >> $LOGFILE
echo '------------------------------' >> $LOGFILE
Avvio manuale
- lanciate il seguente comando
sh ./borg_backup.sh
- alla domanda:
Attempting to access a previously unknown unencrypted repository
- rispondete con
yes
Avvio automatizzato
Il metodo migliore è usare cron, che sicuramente è già pre-installato nella vostra distro linux.
Create un cronjob che faccia partire lo script alle 03:00 di notte:
- lanciate il seguente comando
crontab -e
- poi scrivere quanto segue
0 3 * * * /home/borg/borg_backup.sh
Comandi utili:
systemctl status cron
- controlla se il servizio è attivo e/o installatocrontab -l
- lista degli attuali cronjobjournalctl -u cron
- cronologia di cron
Controllare la cartella dei backup
- entrare nella cartella dei backup
cd /home/borg/docker_backup/
- scrivere
borg list .
per ottenere la lista dei backup effettuati - scegliere il backup che vi interessa usando una data epoch, esempio 1588986941
- montare il backup su una cartella temporanea
borg mount .::1588986941 /mnt/temp
- controllare il contenuto della cartella e fate quello necessario
- smontare la cartella temporanea del backup
borg umount /mnt/temp
N.B. Di tanto in tanto, controllare i backup effettuati per evitare brutte sorprese!!!