• Non ci sono risultati.

Preparazione dei vostri dati

Nel documento Introduzione a Linux (pagine 176-181)

Capitolo 9.  Tecniche fondamentali di backup

9.1.1.  Preparazione dei vostri dati

Nella   maggioranza   dei   casi   prima   raccoglieremo   tutti   i   dati   da   conservare   in   un   unico   file 

d'archivio, che poi compatteremo. Il processo di archiviazione implica il concatenamento di tutti i 

file elencati e l'estrazione di tutti gli spazi non necessari. In Linux di solito questo si fa con il 

comando  tar. In origine  tar  era stato creato per archiviare dati su nastro, ma può anche creare 

archivi, noti come tarball.

tar ha molte opzioni, di cui citiamo qui sotto le più importanti:

-v: dettagliata o “verbosa”

-t: prova o test. Mostra il contenuto di una tarball

-x: estrazione archivio

-c: creazione archivio

-f perifericaarchivio:   usa  perifericaarchivio  come 

sorgente/destinazione della tarball. La periferica predefinita è la prima a nastro 

(di solito /dev/st0 o qualcosa di simile)

E' comune trascurare il prefisso meno [­] con le opzioni di tar, come potete vedere negli esempi 

seguenti.

Usate GNU tar per la compatibilità

Gli archivi creati con una versione proprietaria di tar in un sistema potrebbero essere 

incompatibili con tar di un altro sistema proprietario. Ciò potrebbe causare molti mal di 

testa, come quando l'archivio deve essere ripristinato in un sistema che non esiste più. 

Usate   la   versione   GNU   di  tar  in   tutti   i   sistemi   per   prevenire   che   il   vostro 

amministratore di sistema scoppi in lacrime. Linux utilizza sempre tar di GNU. Quando 

lavorate su altre macchine UNIX, inserite  tar ­­help per scoprire quale versione state 

usando. Contattate il vostro amministratore di sistema se non vedete la parola GNU da 

qualche parte.

Nell'esempio seguente viene creato e spacchettato un archivio.

gaby:~> ls images/ me+tux.jpg nimf.jpg

gaby:~> tar cvf images in a dir.tar images/− − − images/

images/nimf.jpg images/me+tux.jpg

gaby:~> cd images

gaby:~/images> tar cvf images without a dir.tar *.jpg− − − me+tux.jpg

nimf.jpg

gaby:~/images> cd

gaby:~> ls */*.tar

images/images without a dir.tar− − − gaby:~> ls *.tar

images in a dir.tar− − −

gaby:~> tar xvf images in a dir.tar− − − images/

images/nimf.jpg images/me+tux.jpg

gaby:~> tar tvf images/images without dir.tar− −

rw r r gaby/gaby 42888 1999 06 30 20:52:25 me+tux.jpg

− − −− −− − −

rw r r gaby/gaby 7578 2000 01 26 12:58:46 nimf.jpg

− − −− −− − −

gaby:~> tar xvf images/images without a dir.tar− − − me+tux.jpg

nimf.jpg

gaby:~> ls *.jpg me+tux.jpg nimf.jpg

Questo esempio illustra anche la differenza tra una directory archiviata con tar e un complesso di 

file  archiviati  con  tar.  E' consigliabile comprimere le directory solamente,  cosicché i file non 

sprizzeranno ovunque nel momento dello spacchettamento della tarball (cosa che potrebbe avvenire 

in   un   altro   sistema   dove   non   potreste   sapere   quali   file   ci   siano   già   là   e   quali   siano   quelli 

dell'archivio). 

Quando una unità a nastro è connessa al vostro computer ed è stata configurata dall'amministratore 

di sistema, i nomi dei file terminanti in .tar vengono rimpiazzati con il nome della periferica a 

nastro, per esempio:

tar cvf /dev/tape mail/

La   directory  mail  e   tutti   i   file   che   contiene   vengono   compressi   in   un   file   che   viene 

immediatamente scritto su nastro. Un elenco dei contenuti ci viene mostrato perché abbiamo usato 

l'opzione "verboso".

9.1.1.2. Copie di sicurezza incrementali con tar

Lo strumento  tar  supporta la creazione di backup incrementali, usando l'opzione ­N. Con tale 

opzione potete specificare una data e tar controllerà la marca temporale (timestamp) di tutti i file 

specificati rispetto a questa data. Se i file sono cambiati più recentemente di tale data, saranno 

inclusi nella copia di sicurezza. L'esempio seguente utilizza il tempo di creazione di un precedente 

archivio come valore della data. Per prima cosa viene creato l'archivio iniziale e viene mostrata la 

marca temporale del file di backup. Poi viene creato un nuovo file di cui vogliamo fare un nuovo 

backup, che contenga solo questo nuovo file:

jimmy:~> tar cvpf /var/tmp/javaproggies.tar java/*.java java/btw.java java/error.java java/hello.java java/income2.java java/income.java java/inputdevice.java java/input.java java/master.java java/method1.java java/mood.java java/moodywaitress.java java/test3.java java/TestOne.java java/TestTwo.java java/Vehicle.java jimmy:~> ls l /var/tmp/javaproggies.tar

rw rw r 1 jimmy jimmy 10240 Jan 21 11:58 /var/tmp/javaproggies.tar − − − −−

jimmy:~> touch java/newprog.java

jimmy:~> tar N /var/tmp/javaproggies.tar \

cvp /var/tmp/incremental1 javaproggies.tar java/*.java 2> /dev/null

− −

java/newprog.java

jimmy:~> cd /var/tmp/

jimmy:~> tar xvf incremental1 javaproggies.tar− java/newprog.java

Gli   errori   standard   vengono   rediretti   verso  /dev/null:   se   non   fate   ciò,  tar  stamperà   un 

messaggio per ogni file non modificato dicendovi che non sarà eliminato.

Questo modo di funzionare ha lo svantaggio che si basa sul tempo di creazione dei file: dite che 

scaricate un archivio nella directory contenente le vostre copie di sicurezza e l'archivio contiene file 

che sono stati creati due anni fa. Quando viene controllata la data di creazione di quei file rispetto al 

tempo di creazione dell'archivio iniziale, i nuovi file sembreranno in realtà vecchi a  tar  e non 

saranno inclusi in un backup incrementale fatto usando l'opzione -N.

Una scelta migliore potrebbe essere l'opzione  -g, che creerà un elenco di file da archiviare. Nel 

momento   della   copia   di   sicurezza   incrementale,   i   file   saranno   confrontati   con   questo   elenco. 

Funziona così:

jimmy:~> tar cvpf work 20030121.tar − −g snapshot 20030121 work/− work/

work/file1 work/file2 work/file3

jimmy:~> file snapshot 20030121− snapshot 20030121: ASCII text−

Il giorno dopo l'utente  jimmy  lavora ancora un po' su  file3  e crea  file4. Al termine della 

giornata effettua una nuova copia di sicurezza:

jimmy:~> tar cvpf work 20030122.tar g snapshot 20030121 work/− − − work/ work/file3 work/file4

Questi sono alcuni semplici esempi, ma potreste usare anche questo tipo di comando in un processo 

cron (v. Sezione 4.4.4.) che indica per esempio un file di snapshot per il backup settimanale e uno 

per quello giornaliero. I file di snapshot verranno rimpiazzati al momento dei backup completi in tal 

caso.

Maggiori informazioni si possono trovare nella documentazione di tar.

La vera sostanza

Come   probabilmente  potete notare,  tar  va bene quando stiamo discorrendo di una 

semplice directory, un insieme di file che stanno assieme. Comunque esistono degli 

strumenti che sono più facili da gestire quando volete archiviare intere partizioni, dischi 

o progetti più grandi. Noi parliamo qui solo di tar perché è uno strumento molto diffuso 

per distribuire archivi. Capiterà abbastanza spesso che avrete bisogno di installare un 

software che trovate nella cosiddetta "tarball compressa". Date uno sguardo alla Sezione 

9.3. per un modo più semplice di effettuare copie di sicurezza regolari.

9.1.1.3. Compressione e spacchettamento con gzip o bzip2

I dati, comprese le tarball, possono essere compressi usando gli strumenti zip. Il comando  gzip 

aggiungerà il suffisso .gz al nome del file e rimuoverà il file originale.

jimmy:~> ls la | grep tar

rw rw r 1 jimmy jimmy 61440 Jun 6 14:08 images without dir.tar

− − − −− − −

jimmy:~> ls la images without dir.tar.gz− −

rw rw r 1 jimmy jimmy 50562 Jun 6 14:08 images without dir.tar.gz

− − − −− − −

Decomprimete i file gzip con l'opzione -d.

bzip2 funziona in modo simile, ma usa un avanzato algoritmo di compressione, cosicché genera file 

più piccoli. Guardate le pagine info di bzip2 per maggiori dettagli.

I pacchetti di Software Linux vengono spesso distribuiti in una tarball compressa con gzip. La cosa 

importante da fare dopo aver spacchettato questo genere di archivi è trovare README e leggerlo. In 

genere conterrà istruzioni per l'installazione del pacchetto.

Il comando GNU tar tiene in considerazione i file gzip. Usate il comando

tar zxvf file.tar.gz

per scompattare e dearchiviare i file .tar.gz o .tgz. Usate invece

tar jxvf file.tar.bz2

per spacchettare gli archivi tar che sono stati compressi con bzip2.

9.1.1.4. Gli archivi Java

Il progetto GNU ci mette a disposizione lo strumento  jar  per generare archivi Java. Si tratta di 

un'applicazione Java che combina molteplici file in un singolo file d'archivio JAR. Pur essendo uno 

strumento di uso generale per l'archiviazione e la compressione (basato sul formato di compressione 

ZIP e ZLIB), jar era stato concepito principalmente per l'impacchettamento di codice Java, applet 

e/o applicazioni, in un singolo file. I componenti di una applicazione Java, combinati in un solo file, 

possono essere scaricati molto più rapidamente.

Diversamente da tar, jar normalmente comprime, indipendentemente da altri strumenti (in quanto 

si tratta in sostanza della versione Java di  zip). Inoltre permette inserimenti individuali in un 

archivio che l'autore sigla, in modo che le origini possono essere certificate.

La sintassi  è quasi uguale a quella del comando  tar.  Ci riferiremo a  info  jar  per differenze 

specifiche.

tar, jar e i collegamenti simbolici

Una funzione degna di nota, trascurata nella documentazione standard, è che jar seguirà 

i collegamenti simbolici. I dati a cui puntano questi collegamenti verranno ricompresi 

nell'archivio. Di base in  tar  si archiviano solo i collegamenti simbolici, ma questo 

comportamento può essere modificato con l'opzione -h.

Salvare copie dei vostri dati in un altro host è una semplice ma accurata maniera per fare dei 

backup. Guardate il Capitolo 10 per maggiori informazioni su scp, ftp ed altri ancora.

Nella prossima sezione tratteremo delle periferiche locali di backup.

Nel documento Introduzione a Linux (pagine 176-181)