Le strategie di backup possono essere diverse a seconda delle necessità e delle quantità di dati da gestire.
Si suole distinguere tra le seguenti modalità:
d1, d2, d3, d4, d5...
)d1, d2-d1, d3-d2, d4-d3, d5-d4...
)d1, d2-d1, d3-d1, d4-d1, d5-d1...
)Il comando tar
serve a riunire in un unico file il contenuto di una o più directory.
$ tar -cvf archivio.tar documenti/
documenti/
documenti/elencoutenti.txt
documenti/elencoservizi.txt
documenti/protocolli.txt
Di default tar non si occupa della compressione e non dereferenzia i link simbolici.
Per vedere i contenuti di un file tar si usa il comando tar -t
, per estrarli il comando tar -x
.
$ tar -tvf archivio.tar
drwxr-xr-x loris/jasiu 0 2007-03-22 15:52 documenti/
-rw-r--r-- loris/jasiu 2297 2007-03-21 15:27 documenti/elencoutenti.txt
-rw-r--r-- julie/jasiu 15853 2007-03-21 15:27 documenti/elencoservizi.txt
lrwxrwxrwx loris/jasiu 0 2007-03-22 15:52 documenti/protocolli.txt -> ../../fuoristruttura/protocolli.txt
$ tar -xvf archivio.tar
documenti/
documenti/elencoutenti.txt
documenti/elencoservizi.txt
documenti/protocolli.txt
I singoli file o le singole directory possono essere estratte usando la modalità interattiva (tar -xw
) oppure specificandone il nome.
$ tar -xvwf archivio.tar
extract `documenti'?y
documenti/
extract `documenti/elencoutenti.txt'?y
documenti/elencoutenti.txt
extract `documenti/elencoservizi.txt'?n
extract `documenti/protocolli.txt'?n
$ tar -xvf archivio.tar documenti/elencoutenti.txt
documenti/elencoutenti.txt
I file tar spesso vengono compressi. Normalmente si usa compress
, gzip
o bzip2
. Il comando tar
può essere usato direttamente con i rispettivi filtri:
$ tar -cvzf archivio.tar.gz documenti # gzip
$ tar -cvjf archivio.tar.bz2 documenti # bzip2
$ tar -cvZf archivio.tar.Z documenti # compress
$ file archivio*
archivio.tar: POSIX tar archive
archivio.tar.bz2: bzip2 compressed data, block size = 900k
archivio.tar.gz: gzip compressed data, from Unix, last modified: Thu Mar 22 18:24:43 2007
archivio.tar.Z: compress'd data 16 bits
È buona prassi comprimere una tutti i file di una directory "dall'esterno" (includendo quindi anche la directory stessa).
Il comando tar
va sempre usato con una delle seguenti "azioni" da specificare come prima opzione:
A
(--concatenate
): aggiunge un archivio tar ad un altroc
(--create
): crea un file tard
(--diff
): mostra le differenze tra un archivio e un file system, riportando le differenzer
(--append
): aggiunge dei file ad un archiviot
(--list
): elenca i contenuti di un archiviou
(--update
): aggiorna un archivio con file nuovi o modificatix
(--extract
): estrae i contenuti di un archivioAnche i singoli file possono essere compressi, direttamente con i programmi gzip, bzip2 e compress.
Di default, i file originali vengono sostituiti con le copie compresse, ma è possibile fare altrimenti con l'opzione -c
(--stdout
):
$ ls
elencoservizi.txt elencoutenti.txt
$ gzip elencoservizi.txt
$ ls
elencoservizi.txt.gz elencoutenti.txt
$ gzip -c elencoutenti.txt > elencoutenti.gz
$ ls
elencoservizi.txt.gz elencoutenti.gz elencoutenti.txt
I file compressi possono essere estratti con i comandi gunzip
, bunzip2
, uncompress
.
I file compressi con gzip e compress possono essere visualizzati al volo con zcat
e zless
.
Il popolare formato zip è utilizzabile con Linux attraverso i programmi zip e unzip, che permettono di avere una certa compatibilità con il mondo "windoze".
Da tenere presenti alcune differenze fondamentali nelle modalità predefinite:
zip
dereferenzia i link simbolicizip
non opera ricorsivamenteÈ possibile però ovviare con le opportune opzioni:
$ zip documenti.zip documenti # senza ricorsione
adding: documenti/ (stored 0%)
$ zip -r documenti.zip documenti # i link simbolici vengono dereferenziati
updating: documenti/ (stored 0%)
adding: documenti/elencoutenti.txt (deflated 61%)
adding: documenti/elencoservizi.txt (deflated 77%)
adding: documenti/protocolli.txt (deflated 66%)
$ zip -ry documenti.zip documenti # i link simbolici non vengono dereferenziati
updating: documenti/ (stored 0%)
updating: documenti/elencoutenti.txt (deflated 61%)
updating: documenti/elencoservizi.txt (deflated 77%)
updating: documenti/protocolli.txt (stored 0%)
Il programma cpio è a volte usato per la sua caratteristica di ottenere i file da archiviare dallo standard input (per questo lo si usa spesso con find).
Ha tre modalità di lavoro:
cpio -o
serve ad archiviarecpio -i
serve ad estrarrecpio -p
serve a trasferireUn esempio d'uso:
$ find struttura | cpio -o | gzip > struttura.cpio.gz # archiviazione
71 blocks
$ zcat struttura.cpio.gz | cpio -i # estrazione
71 blocks
La modalità copy-pass effettua un'archiviazione in una directory diversa.
$ find documenti -name '*txt'| cpio -pd destinazione/
36 blocks
L'opzione -d
serve a creare le eventuali directory intermedie necessarie.
Il controllo dell'integrità di un file, soprattutto dopo che esso è stato trasferito via rete o su un supporto rimovibile, può essere importante. Per esso è conveniente l'uso del programma md5sum, che calcola un checksum a 128 bit di un file o del proprio standard input, secondo quanto previsto dall'RFC 1321.
$ md5sum mybackup.tgz
09b8cab17866102796512ff054957bc5 mybackup.tgz
Spesso l'output viene reindirizzato su un file chiamata MD5SUMS, usato poi per il controllo:
$ md5sum mybackup.tgz > MD5SUMS
$ md5sum -c MD5SUMS
mybackup.tgz: OK
Il programma rsync può essere utilizzato per diversi scopi. È utilissimo per mantenere sincronizzati due filesystem (o due alberi di directory), copiando solo i file modificati dopo l'ultima operazione di backup.
$ rsync -avz documenti documenti_copia # copia la directory documenti
building file list ... done
sent 220 bytes received 20 bytes 480.00 bytes/sec
total size is 18185 speedup is 75.77
$ rsync -avz documenti/ documenti_copia # copia i contenuti della direcory documenti
building file list ... done
sent 209 bytes received 20 bytes 458.00 bytes/sec
total size is 18185 speedup is 79.41
La sincronizzazione può essere fatta anche da o verso un altro host raggiungibile via ssh.
$ rsync -avz documenti loris@mercurio:documenti # copia la directory documenti
# sull'host mercurio
Per operazioni di sincronizzazione periodiche conviene usare meccanismi di login senza invio di password (vedi ssh-keygen).
Il backup di dati da partizioni ext2 ed ext3 può essere fatto con il programma dump, che permette backup interi e incrementali.
loris@jasiu:~/Desktop/esperimenti/struttura$ dump -0uf boot.dump /boot
DUMP: Date of this level 0 dump: Thu Mar 22 21:51:42 2007
......
DUMP: Date of this level 0 dump: Thu Mar 22 21:51:42 2007
DUMP: Date this dump completed: Thu Mar 22 21:51:53 2007
DUMP: Average transfer rate: 4302 kB/s
DUMP: DUMP IS DONE
Il ripristino va fatto con il comando restore
.
Partimage è un programma interattivo che può fare un backup completo (ed il successivo ripristino) dei blocchi utilizzati di una partizione.
Il backup e il ripristino possono essere fatti su/da un altro host, tramite rete.
A volte può essere comodo fare il backup dei dati su CD-ROM o DVD-ROM.
Esistono a tale scopo le utility mkisofs e cdrecord per, rispettivamente, creare le immagini ISO dei dischi da produrre e successivamente masterizzarli.
$ mkisofs -o backup.iso -JRAVv dir1 # crea l'immagine ISO di un cd-rom
$ cdrecord -v -eject speed=4 dev=0,3,0 backup.iso # masterizza il cd
Il programma dvdisaster consente di inserire nell'immagine ISO di un DVD dei dati di controllo che permettono il ripristino completo dei dati principali nel malaugurato casa di corruzione (es. superficie graffiata).
Per esigenze di più alto livello, si può pensare di utilizzare software specifici, come ad esempio:
Nel definire le procedure di backup e ripristino bisogna ricordarsi di conrollare che vengano preservati:
file
di che tipo è il suo contenuto e procedere in una sorta di caccia al tesoro