Per i backup da tenere a "breve" termine gli snapshot vanno benissimo: sono facili da fare, ed è facile il ripristino in caso di necessità. Per backup a più lungo termine, per esempio su dischi esterni o su DVD, ci vuole un approccio diverso: gli archivi. In questa pagina vediamo come creare archivi in gnu/linux con dar, un ottimo programma di archiviazione ispirato a tar, ma con molte interessanti e vantaggiose funzioni.
Al contrario delle copie snapshot, gli archivi spesso sono file "monolitici" o separati in più parti di dimensioni pari al supporto (CD, DVD, ...) cui sono destinati, sono compressi e hanno accorgimenti utili a verificare l'integrità dell'archivio, per prevenire le perdite di dati.
Riguardo a questa differenza, e riguardo ad altri accorgimenti importanti quando si fanno backup, vedere: Good Backup Practice Short Guide
Come detto in una articolo recente, la mia politica di backup è fare snapshot settimanali e
mensili.
Successivamente, ogni 4 mesi, viene creato un pacchetto dar compresso con gzip
dallo snapshot più recente (/mnt/backup/private/snapshots/weekly.0/castor) per
ogni directory salvata, e tenuto nello stesso hard disk secondario degli
snapshot.
Periodicamente, e manualmente, masterizzo gli archivi di dar su DVD.
Se non vogliamo creare degli archivi compressi, ma vogliamo comunque copiare i nostri dati su CD/DVD, può esserci utile usare dirsplit per dividere directory di grandi dimensioni in tante directory più piccole che possano essere contenute nei CD/DVD. Per maggior sicurezza, usiamo dvdisaster per proteggere i supporti.
Semplicemente, chiamo questo script (/root/backup_script/backup_dar.sh)
periodicamente con anacron:
#!/bin/bash
# crea archivi dar dallo snapshot più recente
# imposta alcune variabili utili
BKPATH=/mnt/backup/darchivi
RADICE=/mnt/backup/private/snapshots/weekly.0
CONFIG=/root/backup_script/dar_config.dcf
DATA=`date -I`
# sposta temporaneamente i vecchi archivi
for i in `ls $BKPATH/*.dar`
do
mv $i old.$i
done
# crea i nuovi archivi
dar --create $BKPATH/home-$DATA --fs-root $RADICE/castor --go-into home --batch $CONFIG
dar --create $BKPATH/sistema-$DATA --fs-root $RADICE/castor --go-into etc \
--go-into root --batch $CONFIG
dar --create $BKPATH/dati-$DATA --fs-root $RADICE/castor --go-into mnt/win_d --batch $CONFIG
dar --create $BKPATH/linutop-$DATA --fs-root $RADICE/ --go-into linutop \
--go-into linutop-dpkg \
--go-into linutop-mysql --batch $CONFIG
dar --create $BKPATH/pollux-$DATA --fs-root $RADICE/pollux --go-into Users --batch $CONFIG
# rimuove i vecchi archivi
rm old.*.dar
exit
Questo è il contenuto del mio file di configurazione di dar,
/root/backup_script/dar-config.dcf (i commenti dovrebbero essere sufficienti a capire cosa fa):
###############################
# file di configurazione per dar
# chiamare con l'opzione --batch dar_config.dcf
###############################
# Opzioni per qualsiasi azione
all:
# Fa un beep quando c'e' bisogno di un intervento dell'utente
--beep
# Restituisce un output dettagliato di quello che fa
#--verbose
###############################
##### Opzioni di creazione ####
create:
# --fs-root /
# Rimane sul file system corrente
--no-mount-points
#### SLICE ####
# Dividi gli archivi in slice da 680MB (per stare in CD-R da 700MB)
#--slice 680M
# per i DVD-R
--slice 4300M
# crea file di controllo con par2, appoggiandosi allo script dar_par_create.duc
# la ridondanza è fissata al 2%
--execute "/root/backup_script/dar_par_create.duc %p %b %n %e %c 2"
# con slice da 4300M i file par creati sono <100M
#### COMPRESSIONE ####
# Comprimi i file con gzip
--gzip=6
# a list of file to not try to compress (-Z == --exclude-compression)
-Z "*.bz2" -Z "*.dar" -Z "*.gz" -Z "*.rar" -Z "*.tbz" -Z "*.tgz" -Z "*.zip" -Z "*.ZIP"
-Z "*.deb" -Z "*.rpm"
# ho molti video avi non compressi che voglio comprimere
# -Z "*.avi"
-Z "*.flv" -Z "*.mp4" -Z "*.MP4" -Z "*.mpeg" -Z "*.mpg" -Z "*.MPG"
-Z "*.jpeg" -Z "*.jpg" -Z "*.JPG" -Z "*.png" -Z "*.PNG"
-Z "*.mp3" -Z "*.MP3" -Z "*.ogg"
#### ESCLUSIONE ####
# create empty dir for excluded directories
--empty-dir
# we don't save theses directories (-P == --prune)
# -P tmp -P var/tmp -P proc -P dev -P sys
# here we say we don't want to save dar files
-X "*.*.dar"
# Non vogliamo salvare i dischi virtuali di vmware e di virtualbox (facile reinstallazione)
-X "*.vmdk" -X "*.vmem" -X "*.vdi"
# per non salvare le immagini ISO
# -X "*.iso"
###############################
# opzioni per la verifica degli archivi
test:
-E "/root/backup_script/dar_par_test.duc %p %b %n %e %c"
###############################
# opzioni per l'estrazione di archivi
extract:
# --fs-root /
# non sovrascrive
# --no-overwrite
# ripristina solo i file piu' recenti di quelli presenti
# --recent
###############################
# opzioni predefinite se non corrisponde nessuna delle precedenti azioni
default:
# if no action is given then show the version
# in place of the usage help
-V
Perché funzioni la creazione e la verifica con i file di controllo con par2, sono
necessari anche questi script, presi direttamente dal sito di dar (non c'è nulla di mio).
/root/backup_script/dar_par_create.duc e /root/backup_script/dar_par_test.duc.
E questa è la riga da aggiungere ad /etc/anacrontab per fare il backup ogni quattro mesi:
120 40 darchivi.4mesi /root/backup_script/backup_dar.sh
La verifica avviene tramite i controlli interni di dar e tramite parchive, con ridondanza al 2%. Ci si porta nella directory che contiene gli archivi (/mnt/backup/darchivi) e si dà il comando:
dar --test $ARCHIVIO -B $CONFIG
$ARCHIVIO è il nome dell'archivio, senza estensione e senza il numero di slice (cioè senza .N.dar, dove N è il numero di slice) $CONFIG è il percorso del file di configurazione, si può omettere se è /etc/darrc.
Grazie a parchive, se viene trovata corrotta una quantità di dati minore o
uguale al 2%, viene automaticamente riparata (è necessario che sia presente dar_par_test.duc).
Per ripristinare gli archivi, ci si porta nella directory che contiene gli archivi, si crea una directory temporanea per estrarre i file, e si dà il comando:
dar --extract $ARCHIVIO -B $CONFIG -R /path/to/temp/directory
l'opzione --extract si può abbreviare con -x.
Per ripristinare solo alcuni file, dobbiamo prima conoscere il percorso completo di questi file nell'archivio. Se non lo conosciamo, ma conosciamo solo il nome del file da ripristinare, possiamo chiedere a dar di mostrarci la lista dei file nell'archivio, e poi filtrarla con grep.
Per vedere una lista del contenuto di un archivio:
dar --list $ARCHIVIO
Successivamente, per estrarre il file:
dar -x $ARCHIVIO -B $CONFIG -R /path/to/temp/directory -g path/to/the/file
Se usiamo l'opzione -B dar eseguirà automaticamente il controllo dell'archivio tramite parchive prima di estrarre i file. Per evitare questo controllo, che può essere molto lungo con archivi grandi (e superfluo, se dobbiamo estrarre file piccoli), dobbiamo omettere il riferimento al file di configurazione con -B.
Come riferimento, ecco una lista dei percorsi e dei file di configurazione o degli script usati per i backup con dar (allegati a questa pagina gli script citati):
/mnt/backup/private/rsnapshot/weekly.0/: dir root dei file da archiviare/mnt/backup/darchivi/: dir che contiene gli archivi dar/mnt/backup/darchivi/[home|sistema|dati|linutop|pollux]-2009-05-05.N.dar:
modello dei nomi delle slice degli archivi create/mnt/backup/darchivi/[home|sistema|dati|linutop|pollux]-2009-05-05.N.dar.vol00+40.par2:
modello dei nomi dei file di verifica par creati| Allegato | Dimensione |
|---|---|
| backup_dar.sh | 1.07 KB |
| dar-config.dcf | 3.4 KB |
| dar_par_create.duc | 2.41 KB |
| dar_par_test.duc | 1.28 KB |
commenti
Invia nuovo commento