Scaricando dei programmi per Linux vi sarete sicuramente imbattuti in dei file con estensione particolare dei quali ignoravate l'esistenza. Spesso si tratta di file .tar.gz o di .tar.bz2. È così infatti che vengono solitamente distribuiti i programmi in codice sorgente, che dovranno essere poi compilati per permetterne l'esecuzione. Ma perché hanno doppia estensione? Il motivo va ricercato nel formato di questi file. Si tratta in effetti di più file "archiviati" in uno unico e compressi con un apposito programma (tipicamente gzip o bzip2).
La differenza tra questi ultimi due sta nel fattore di compressione: bzip2 utilizza un algoritmo più efficiente ma anche più lento del classico gzip. Risulta quindi essenziale comprendere a fondo e aver pratica con questo tipo di file. Passiamo quindi ad analizzare quelli che sono i comandi fondamentali per avere una piena padronanza con i nostri "archivi".
GZIP
È uno dei programmi base e che sicuramente è presente nella vostra distribuzione. Può essere utilizzato sia per la compressione che per la decompressione di file con estensione .gz e .Z. La sua sintassi è molto semplice ed è del tipo:
Sostituite ad opzioni i parametri che fanno al caso vostro. Ecco una breve lista delle opzioni più comuni e di maggior utilizzo:
- -numero
- -r
- -v
- -c
- -t
- -f
- -d
Ad esempio se volessimo comprimere il più possibile il file /var/log/messages.0 potremmo usare:
Per decomprime il nuovo file creato (/var/log/messages.0.gz
Per testare l'integrità di un file .gz useremo l'opzione -t:
Dopo esser stato compresso il file originale viene cancellato e sostituito dalla sua versione "ristretta" .gz. Non è possibile, al contrario di altri programmi, creare degli archivi compressi multifile. Ogni file .gz contiene infatti al suo interno un unico file. Questo, che può sembrare un duro scoglio, viene facilmente superato con l'utilizzo di tar.
TAR
Tar è lo strumento utilizzato da tutti gli UNIX per la creazione di archivi. Addirittura distribuzioni come Slackware lo hanno scelto come formato per la distribuzione di pacchetti. Il funzionamento di tar è molto semplice: tar non fa altro che "unire" in un unico file una serie di file o directory. Tar non è in grado di comprimere. Ma può essere facilmente usato in combinazione di gzip e bzip2. Inoltre due delle opzioni di tar (z e j) consentono di gestire gli archivi tar compressi con gzip o bzip2 in maniera del tutto trasparente.
Ecco la sintassi e quelle che sono le opzioni di maggiore utilità:
Dove al posto di file.tar dovrete scrivere il nome dell'archivio che vi apprestate a creare, e al posto di files i file o la directory che vorrete inserire nel vostro archivio.
Al posto di [opzioni] potrete mettere:
- c
- t
- x
- f
- k
- v
- z
- j
Ad esempio:
Creerà un archivio chiamato documenti.tar.gz comprimendo i file in /home/Andrea/documenti.
Estrarrà l'archivio linux-2.4.15.tar.gz dopo averlo decompresso, visulizzando i file man mano che vengono processati.
Estrarrà il singolo file index.html dall'archivio mirror.tar.
Visualizza i file presenti nell'archivio linux-2.4.15.tar.gz controllandone l'integrità.
Decomprimerà un archivio compresso con bzip2, visualizzandone i file.
BZIP2
Come già detto bzip2 è un altro strumento che ci permette di comprimere file. Al contrario di gzip, bzip2 utilizza come algoritmo il bz2 che consente di avere un fattore di compressione maggiore rispetto a quello ottenibile solitamente con gzip.
La sintassi è molto simile a quella di gzip ed è come segue:
Al posto di [opzioni] potremo mettere una delle seguenti:
- -d
- -v
- -c
- -f
- -k
- -t
Altre utility
Quelli di cui vi abbiamo parlato sono i comandi fondamentali per la creazione di archivi e file compressi. Esistono anche dei programmi derivati da questi che vi permettono di operare su file compressi in maniera molto più veloce ed agevole. Ad esempio al posto di usare gzip con l'opzione -d per decomprimere un file, potrete usare il comando gunzip. Allo stesso modo esistono dei comandi come zless, zcat, zgrep, zdiff e zcmp per utilizzare in maniera trasparente i file .gz. Pur essendo compressi infatti i file verranno aperti e sarà possibile utilizzarli in maniera del tutto normale. Ad esempio se volessimo leggere il contenuto di un file di testo compresso con gzip, potremmo usare zless. In questo modo ci risparmieremo la fatica di decomprimerlo con gzip (o gunzip) e di leggerlo con zless. Un discorso analogo si può fare per zcat (equivalente di gunzip+cat), zgrep (equivalente di gunzip+grep), zdiff (equivalente di gunzip+diff), zcmp (equivalente di gunzip+cmp). Sono sicuro che una volta acquisita pratica con il loro uso, questi comandi vi torneranno certamente di grande utilità.