Archivi di Backup con dar

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.

Backup con dar

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

Verifica e riparazione dei backup

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).

Ripristino con dar

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.

File e percorsi usati

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):

Riferimenti utili

Disk ARchive

Trackback URL for this post:

http://gerlos.altervista.org/trackback/452
AllegatoDimensione
backup_dar.sh1.07 KB
dar-config.dcf3.4 KB
dar_par_create.duc2.41 KB
dar_par_test.duc1.28 KB

commenti

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Allowed HTML tags: <a> <em> <strong> <del> <cite> <code> <img> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Insert Flickr images: [flickr-photo:id=230452326,size=s] or [flickr-photoset:id=72157594262419167,size=m].
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Per provare che sei un visitatore umano, rispondi a questa domanda. È per evitare l'inserimento di messaggi spam.
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.