Backup e compressione dati

Loris Tissino

29 giugno 2009

Tipi di backup

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

Tar

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.

Tar (lista ed estrazione)

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

Tar (estrazione singoli file)

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

Tar e la compressione

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

Tar: riepilogo azioni

Il comando tar va sempre usato con una delle seguenti "azioni" da specificare come prima opzione:

Compressione dei singoli file

Anche 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

Decompressione dei singoli file

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.

Zip e Unzip

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:

È 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%)

Cpio

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:

Un esempio d'uso:

$ find struttura | cpio -o | gzip > struttura.cpio.gz   # archiviazione
71 blocks

$ zcat struttura.cpio.gz | cpio -i  # estrazione
71 blocks

Cpio (modalità copy-pass)

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.

Md5sum

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

Rsync

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

Rsync da/verso altro host

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

Dump e Restore

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

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.

Backup su CD/DVD

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

DVDisaster

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

Sistemi avanzati per il backup

Per esigenze di più alto livello, si può pensare di utilizzare software specifici, come ad esempio:

Attenzione a...

Nel definire le procedure di backup e ripristino bisogna ricordarsi di conrollare che vengano preservati:

Esercizi

  1. comprimere un file di testo con zip, gzip, compress e bzip2, provando le diverse opzioni per la compressione; verificare i risultati ottenuti
  2. creare un archivio tar non compresso a partire da una directory
  3. elencare i file appartenenti ad un archivio tar
  4. estrarre i file appartenenti ad un archivio tar
  5. scaricare il file all'url [[TODO]], determinare con file di che tipo è il suo contenuto e procedere in una sorta di caccia al tesoro