Backup con fuss-backup
Il pacchetto fuss-backup
installa un nuovo programma di backup basato su
borg che fornisce al contempo anche le
funzionalità di dump dei database (LDAP, eventuali MySQL e Postgres)
installati sul server. Per questi ultimi viene creato un dump sotto
/var/backups
(rispettivamente nelle sottodirectory slapd
, mysql
,
pgsql
) in cui vengono mantenute gli ultimi sette dump testuali per un
accesso immediato. La directory /var/backups
è inserita di default nel
backup su disco esterno o NAS.
Pianificazione del backup
Per la pianificazione del backup viene installato dal pacchetto il file di
CRON /etc/cron.d/fuss-backup
in cui è programmata l’esecuzione dello
script di backup ogni lunedì alle 13:15. Il backup può essere eseguito
manualmente (invocando il comando fuss-backup
) in qualunque momento.
Il dispositivo esterno viene montato prima dell’esecuzione del backup e smontato al suo completamento. Questo consente, in caso di dischi esterni, una rimozione ed eventuale rotazione.
Configurazione
Per il funzionamento del backup è richiesta la presenza di una configurazione
valida in /etc/fuss-backup/fuss-backup.conf
. In particolare deve essere
impostata la variabile START=yes
e indicato nella variabile DISK
il
dispositivo su cui viene eseguito lo stesso (maggiori dettagli in seguito).
Avvertimento
l’installazione del pacchetto installa un file di configurazione
che blocca l’esecuzione del backup (START=no
e DISK
vuota), occorre pertanto effettuare la configurazione manualmente
in quanto non è noto a priori il nome del dispositivo esterno su
cui si fanno i backup.
Variabili di configurazione
La tabella seguente riporta le variabili presenti nel file di configurazione ed il relativo significato. Nel file sono state commentate con ulteriori dettagli.
Variabile |
Significato |
Default |
---|---|---|
START |
se diversa da |
no |
DISK |
il dispositivo su cui viene effettuato il backup |
vuoto |
PATHS |
le directory di cui viene eseguito il backup (stringa separata da spazi) |
|
MAILTO |
indirizzi cui inviare l’email dei risultati |
root |
RETENTION |
numero minimo di backup (1 per giorno) da tenere in archivio (uso interno) |
7 |
BASEDIR |
directory dove montare il dispositivo di archiviazione |
|
BACKUP_DIR |
sotto-directory della precedente dove creare l’archivio |
|
RECOVERDIR |
directory dove montare i backup per il recupero |
|
Esempio di configurazione
Per configurare ed attivare il backup modificando
/etc/fuss-backup/fuss-backup.conf
sono pertanto sono indispensabili i
seguenti passi:
definire
START=yes
definire un valore opportuno per
DISK
, se ad esempio si dispone di un disco esterno se ne dovrà indicare il nome di dispositivo, ad esempio:DISK=/dev/sdc1
se si dispone di un NAS occorrerà indicare l’indirizzo IP a cui è raggiungibile e la directory che questo esporta in NFS con la sintassi
IP.DEL.NAS.LOCALE:/directory/esportata/dalnas
, ad esempio nel caso del NAS-QNAPTVS653 usato per le prove si avrà:DISK="192.168.10.5:/share/CACHEDEV1_DATA/Public"
Per trovare la directory esportata sul NAS-QNAPTVS653 ci si può collegare allo
stesso con SSH ed esaminare il contenuto del file /etc/exports
, il cui
contenuto riflette le directory definite nella sezione «Shared folders» del
pannello di controllo accessibile via WEB (nel caso illustrato quella
disponibile era Public).
Il formato del file /etc/exports
prevede una directory esportata per
riga (se ne dovrà scegliere una qualora ne esistano diverse), con campi
separati da spazi; il primo campo è la directory da usare nella
variabile DISK
(nel caso in esempio appunto
/share/CACHEDEV1_DATA/Public
).
Come ulteriore configurazione si possono elencare le directory del server di
cui si vuole il backup modificando la variabile PATHS
, da specificare nella
forma di un elenco separato da spazi, ad esempio:
PATHS="/etc /home /var/backups /var/lib /var/log /var/mail /var/local /opt/altridati"
È opportuno anche configurare un indirizzo di posta cui verranno inviate le
email con le notifiche del backup, sia predisponendo un opportuno alias per
l’utente root
che indicando una lista di destinatari (sempre separata da
spazi) nella variabile MAILTO
, ad esempio:
MAILTO="root localsysadmin@fuss.bz.it"
Infine qualora si voglia mantenere uno storico più consistente si può
aumentare il valore della variabile RETENTION
che indica il numero minimo
di backup mantenuti (nel numero massimo di uno a giorno, nel caso in cui in
uno stesso giorno vengano eseguiti più backup verrà mantenuto solo il più
recente). Si tenga presente che borg
supporta la deduplicazione, e che non
esiste il concetto di backup incrementale, ogni backup è sempre completo.
Esclusione
I file che corrispondono al file di esclusione fuss-backup.exclude
(installato di default per escludere MPT, AVI e immagini ISO) non vengono
inclusi nel backup. Se il file è assente il backup viene eseguito senza
escludere nulla.
Nella forma più elementare il formato del file di esclusione prevede un
pattern di shell (ex. *.iso
) per riga, i file il cui pathname corrisponde
al pattern vengono esclusi. Per maggiori dettagli (ed esempi di pattern più
complessi con uso di espressioni regolari) si rimanda alla documentazione
ottenibile con il comando borg help patterns
.
Il default installato dal pacchetto prevede che vengano esclusi dai backup
alcune tipi di file (identificati per estensione, in particolare *.iso
,
*.mp3
e *.avi
, e tutte le directory .cache
che contenendo una
grande quantità di file possono rendere molto lenta l’esecuzione del backup.
In caso di necessità il programma può essere interrotto, quanto salvato da
borgbackup
fino all’ultimo checkpoint (di default sono ogni mezz’ora) non
verrà perso.
Ripristino
Il ripristino può essere effettuato manualmente montando il disco (o la
directory condivisa via NFS sul NAS) che contiene il repository dei backup, ed
usando il comando borg
per recuperare direttamente i file da uno dei
salvataggi. Si legga la documentazione dei comandi borg list
(per elencare
i backup disponibili) e borg extract
(per estrarre i dati) con i relativi
esempi qualora si voglia usare questa strada.
Per semplificare le operazioni il comando fuss-backup
può essere
utilizzato in forma interattiva con i comandi fuss-backup mount
e
fuss-backup umount
per montare e smontare i dati del backup in modo che
possano essere acceduti direttamente attraverso il filesystem.
Con fuss-backup mount
viene montato il disco (o la directory NFS)
contenente il repository dei dati secondo quando configurato nella variabile
BASEDIR
(il default è /mnt/backup
) e poi viene reso disponibile via
FUSE il contenuto dei backup nella directory configurata dalla variabile
RECOVERDIR
(il default è /mnt/recover
).
In questo modo si può accedere direttamente ai file presenti nel backup resi
disponibili attraverso altrettante directory presenti sotto /mnt/recover
nella forma fuss-server-DATA-ORA
(data e ora fanno riferimento al momento
di esecuzione del backup), ad esempio si potrà avere qualcosa del tipo:
root@fuss-server:~# ls /mnt/recover/ -l
totale 0
drwxr-xr-x 1 root root 0 gen 25 09:48 fuss-server-2017-01-20T17:39:56
drwxr-xr-x 1 root root 0 gen 25 09:48 fuss-server-2017-01-25T09:40:51
per cui se si vogliono recuperare i file del backup del 20 Gennaio si dovranno
cercare i file sotto fuss-server-2017-01-20T17:39:56
mentre per quelli del
25 si dovrà cercare sotto fuss-server-2017-01-25T09:40:51
.
Al di sotto di ciascuna directory apparirà poi l’albero delle directory
che si sono coperte con il backup secondo il valore della variabile
PATHS
. L’albero delle directory viene riportato a partire dalla
radice per cui nel caso dei valori di default di PATHS
illustrato in
precedenza, avremo sotto fuss-server-2017-01-25T09:40:51
le
directory etc
, home
e var
. A questo punto si potranno
copiare/esaminare i file dal backup navigando il filesystem sotto
/mnt/recover
con un qualunque strumento di gestione dei file.
Una volta completate le operazioni di recupero si deve procedere a smontare le
directory ed i dati, con il comando fuss-server umount
.
Avvertimento
ci si ricordi sempre di eseguire il comando fuss-backup
umount
, altrimenti l’esecuzione ordinaria dei backup fallirà.