PREV
Capitolo 13 - Comandi Base per la Rete
NEXT
Capitolo 15 - L'Editor vi

Torna all'indice

Capitolo 14. Archiviare i File

Su Slackware Linux, ci sono numerosi programmi che possono essere utilizzati per comprimere e archiviare i files. Questi programmi sono in particolar modo utili per creare backup e scambiare dei file fra macchine connesse alla rete. Questi programmi sono capaci di gestire archivi creati sia su Unix sia su Windows.

top
Torna all'indice

gzip

gzip(1) è il programma di compressione dello GNU. Esso prende un singolo file e lo comprime. Un suo basilare utilizzo è il seguente:

   $ gzip infile

Il file risultante si chiamerà infile.gz e solitamente risulterà essere più piccolo del file di input. Nota che infile.gz sostituirà infile. Questo significa che infile non esisterà più, ma soltanto la sua copia compressa. I file di testo verranno compressi molto, mentre le immagini jpeg, gli mp3, e altri file come questi non lo saranno molto poichè essi sono già compressi. Questo utilizzo basilare è un compromesso fra tempo di compressione e dimensione finale del file. La massima compressione può essere ottenuta così:

   $ gzip -9 infile

Ci vorrà un po' più di tempo per comprimere, ma il risultato sarà il più piccolo che gzip potrà ottenere. Usando valori minori nella linea di comando la compressione sarà più veloce, ma il file non sarà altrettanto compresso.

La decompressione di file gzippati può essere ottenuta con due comandi, che sono praticamente lo stesso programma. gzip decomprimerà ogni file con una particolare estensione. Per essere riconoscibile l'estensione può essere una delle seguenti: .gz, -gz, .z, -z, .Z, or -Z. Il primo metodo è lanciare gunzip(1) su un file, in questa maniera:

   $ gunzip infile.gz

Questo lascerà una versione decompressa di infile nella directory corrente, e l'estensione .gz verrà rimossa dal nome del file.

L'altra maniera per decomprimere un file gzippato è lanciare gzip sul file:

   $ gzip -d infile.gz

Questo si comporterà alla stessa maniera di gunzip. La ragione di questo è semplice: gunzip è soltanto un link simbolo a /bin/gzip:

   $ cd /usr/bin
   $ ls -l gunzip
   lrwxrwxrwx   1 root  root  9 Feb  2 09:45 gunzip -> /bin/gzip

Così, eseguire gunzip è davvero la stessa cosa che eseguire gzip con un nome differente. Il programma può determinare come è stato richiamato e agire di conseguenza. In questo caso, gzip saprà se è stato chiamato come gunzip e decomprimerà il file. Quindi, puoi indifferentemente utilizzare gzip oppure gunzip per decomprimere qualunque file gzippato.

top

Torna all'indice

bzip2

bzip2(1) è un programma di compressione alternativo installato su Slackware Linux. Utilizza un differente algoritmo di compressione rispetto a gzip, che ha alcuni vantaggi e alcuni svantaggi. Il vantaggio principale di bzip2 è la dimensione dei file compressi. bzip2 quasi sempre comprimerà maggiormente rispetto gzip. In alcuni casi, questo può risultare in file drasticamente più piccoli. Questo può risultare molto utile per coloro che utilizzano lente connessioni via modem.

Lo svantaggio di bzip2 è che esso impegna la CPU molto di più rispetto gzip. Questo significa che bzippare un file prenderà generalmente più tempo e userà molto di più la CPU rispetto a quanto sarebbe servito per gzippare il file. Quando si dovrà scegliere quale programma usare, dovrai valutare la velocità e la percentuale di compressione e scegliere cosa è più importante.

L'utilizzo di bzip2 è molto simile a quello di gzip, così non perderemo molto tempo nel descriverlo. Semplicemente lancia bzip2 col nome di un file per decomprimerlo:

   $ bzip2 infile

Il file risultante sarà solitamente più piccolo dell'originale, e si chiamerà infile.bz2. Come gzip, il file di input non esisterà più, poichè bzip2 lo rimpiazzerà con una copia compressa.

Puoi anche usare un argomento numerico nella linea di comando per regolare percentuale di compressione e velocità così come con gzip. Questo esempio mostra come ottenere la massima compressione con bzip2 con un accettabile utilizzo della CPU:

   $ bzip2 -9 infile

Ci sono due comandi per decomprimere i file che terminano con l'estensione .bz2, allo stesso modo di gzip. Puoi usare bzip2 oppure bunzip2(1) per decomprimere file bzippati. Usare bzip2 richiede l'aggiunta di un parametro nella linea di comando:

   $ bzip2 -d infile.bz2

Questo decomprimerà il file bzippato e lo rimpiazzerà con la copia decompressa. Il file risultante verrà inoltre privato dell'estensione .bz2 . Similmente, puoi usare bunzip2 per decomprimere il file:

   $ bunzip2 infile.bz2

Otterrai lo stesso comportamento in entrambe le maniere, grazie ancora ad un link simbolico. Esaminando /bin/bunzip2 ti accorgerai che è semplicemente un link simbolico a /bin/bzip2. Questo utilizza lo stesso trucco di gzip . Scoprirai che chiamare un programma usando differenti nomi per ottenere diversi risultati è uno dei trucchi preferiti dei programmatori Linux.

   $ cd /bin
   $ ls -l bunzip2
   lrwxrwxrwx   1 root  root      5 Feb  2 09:45 /bunzip2 -> bzip2


top
Torna all'indice

tar

tar(1) è l'archiviatore di nastri dello GNU. Prende diversi file o directory e crea un unico grosso file. Questo permette di comprimere un intero albero di directory, cosa impossibile col semplice utilizzo di gzip o bzip2. tar ha numerose opzioni per la linea di comando, che sono mostrate nella sua pagina del manuale. Questa sezione coprirà soltanto gli utilizzi più comuni di tar.

L'uso più comune di tar è decomprimere e de-archiviare un pacchetto che hai scaricato da un sito web o ftp. La maggior parte dei file avrà come estensione .tar.gz . Questo è comunemente conosciuto come “tarball”. Significa che numerosi file sono stati archiviati usando tar e compressi usando gzip. Potresti imbatterti in un file con estensione .tar.Z . Significa la stessa cosa, ma solitamente lo si incontra sui sistemi Unix più vecchi.

Oppure, potresti trovare un file dall'estensione .tar.bz2 da qualche parte. Ad esempio i sorgenti del kernel sono distribuiti anche in questa maniera per un download più rapido. Come potresti aver immaginato, questo è un insieme di file archiviato con tar e poi bzippato.

Puoi ri-ottenere tutti i file di questo archivi usando tar e alcuni argomenti dalla linea di comando. De-archiviare un tarball fa utilizzo del parametro -z, che indica di passare prima il file a gunzip e di farlo decomprimere. Il modo più comune per decomprimere un tarball è questo:

   $ tar -xvzf hejaz.tar.gz

Ci sono abbastanza opzioni. Ma cosa significano? Il -x indica di estrarre. Questo è importante, poichè dice a tar esattamente cosa fare con il file in input. In questo caso, lo stiamo scomponendo nei file dai quali è stato ottenuto. -v indica di essere prolisso. Farà in modo che vengano elencati tutti i file de-archiviati. E' perfettamente lecito tralasciare questa opzione, se la ritieni inutile. In alternativa, puoi usare -vv per far in modo che sia molto loquace ed elenchi molte altre informazioni su ogni file de-archiviato. L'opzione -z dice a tar di passare hejaz.tar.gz dapprima a gunzip. E infine, l'opzione -f dice a tar che la stringa successiva nella linea di comando è il file su cui operare.

Ci sono anche altri modi per scrivere lo stesso comando. Sui vecchi sistemi mancanti di una versione decente di GNU tar, potresti vederlo scritto in questo modo:

   $  gzip -dc hejaz.tar.gz | tar -xvf -

Questo comando scomprimerà il file mandando l'output a tar. Poichè gzip scrive il suo output sullo standard out se così gli viene indicato di fare, questo comando questo comando scriverà il file decompresso sullo standard out. La pipe poi manda questo a tar per la de-archiviazione. Il “-” indica di operare sullo standard input. Esso de-archivierà lo stream di dati che riceve da gzip e lo scriverà sul disco fisso.

Un altro modo di scrivere la linea di comando sopracitata è di tralasciare il trattino prima delle opzioni, in questa maniera:

   $ tar xvzf hejaz.tar.gz

Potresti anche avere a che fare con un archivio bzippato. La versione di tar inclusa in Slackware Linux può maneggiarli allo stesso modo degli archivi gzippati. Invece di -x nelle opzione della linea di comando, dovrai usare -j:

   $ tar -xvjf foo.tar.bz2

E' importante notare che tar piazzerà i file de-archiviati nella directory corrente. Così, se hai un archivio nella directory /tmp che vuoi decomprimere nella tua home directory, ci sono due possibilità. La prima, l'archivio può essere mosso nella tua home directory e poi passato a tar. Oppure, puoi specificare il percorso dell'archivio nella linea di comando:

   $ tar -xvzf /tmp/bar.tar.gz

I contenuti dell'archivio finiranno nella tua home directory, e l'archivio originale rimarrà ancora in /tmp.

Una seconda operazione molto comune con tar è creare i propri archivi. Creare un archivio non è più complicato che de-archiviare altri file; semplicemente occorrono delle diverse opzioni nella linea di comando.

Per creare un archivio tar compresso di tutti i file nella directory corrente (incluse le sotto-directory e i loro file), potresti usare tar così:

   $ tar -cvzf archive.tar.gz .

In questa linea di comando, l'opzione -c dice a tar di creare un archivio, mentre -z fa sì che l'archivio risultante venga compresso con gzip . archive.tar.gz è il file che tu vuoi venga creato. Puoi chiamarlo in qualunque maniera, e se indicherai un nome con un percorso assoluto, l'archivio verrà messo in quella directory. Ecco un esempio:

   $ tar -cvzf /tmp/archive.tar.gz .

L'archivio andrà in /tmp. Puoi anche elencare tutti i file e le directory che vuoi che siano inclusi nell'archivio indicandoli alla fine del comando. In questo caso, il . è la directory da includere nell'archivio. Quest'ultimo può essere rimpiazzato con una lista di vari file, o qualunque cosa tu voglia che venga archiviata.

top
Torna all'indice

zip

Ci sono due utility che possono essere usate sui file zip. Queste sono molto comuni nel mondo Windows, così Linux ha dei programmi per averci a che fare. Il programma di compressione si chiama zip(1), e il programma di compressione si chiama unzip(1).

Comprimere un file è facile:

   $ zip foo *

Questo creerà un file foo.zip, che conterrà tutti i file nella directory corrente. zip aggiungerà l'estensione .zip automaticamente, così non c'è bisogno di includerla nel nome del file. Puoi anche andare ricorsivamente nelle directory zippando tutte le directory che si trovano intorno:

   $ zip -r foo *

Allo stesso modo, decomprimere i file è semplice.

   $ unzip foo

Questo estrarrà tutti i file all'interno di foo.zip, inclusa ogni directory nell'archivio.

Le utility zip hanno alcune opzioni avanzate per creare archivi auto-estraenti, tralasciare dei file, controllare la grandezza compressa dei file, segnalare cosa succede, e molto altro. Controlla la pagina del manuale di zip e unzip per vedere come usare queste opzioni.


top
Torna all'indice

Sommario

In questo capitolo sono stati discussi i programmi che sono usati per comprimere e decomprimere i file archiviati. Ora dovresti sapere cos'è un archivio, e come crearne uno usando tar e il programma di compressione che preferisci, come decomprimerne uno, e come maneggiare gli archivi creati su Windows. Quasi tutto quello che scarichi o invii avrà a che fare con un archivio, così questo sono cose importanti da sapere.

top
Torna all'indice

PREV
Capitolo 13 - Comandi Base per la Rete
NEXT
Capitolo 15 - L'Editor vi