16.6. bzip2 e gzip: programmi per la compressione di dati

Avrete notato che abbiamo già parlato di questi due programmi quando ci siamo occupati di tar. A differenza di WinZip su Windows, qui l'archiviazione e la compressione vengono fatte usando due strumenti separati -- tar per l'archiviazione, e i due programmi di cui stiamo per parlare per comprimere i dati: bzip2 e gzip.

Inizialmente bzip2 era stato scritto per sostituire gzip: i suoi rapporti di compressione sono generalmente migliori, ma d'altra parte richiede più memoria. Il motivo per cui gzip esiste ancora è che è ancora più diffuso di bzip2. Forse un giorno bzip2 sostituirà definitivamente gzip, o forse no.

I due comandi hanno una sintassi simile:

gzip [opzioni] [uno o più file]

Se non viene indicato alcun file, sia gzip che bzip2 si mettono in attesa di dati dallo standard input e inviano il risultato sullo standard output. Quindi potete usare entrambi i programmi nelle pipe. Possiedono anche alcune opzioni in comune:

  1. -1, ..., -9: Imposta il rapporto di compressione. Più alto il numero, migliore la compressione; ma migliore significa anche più lenta: "Niente è gratis".

  2. -d: Decomprime i file. Equivale ad usare gunzip o bunzip2.

  3. -c: Invia sullo standard output il risultato della compressione/decompressione dei file indicati nella linea di comando.

Attenzione! Come comportamento predefinito, sia gzip che bzip2 cancellano i file che hanno compresso (o decompresso) se non usate l'opzione -c. Con bzip2 potete evitarlo usando l'opzione -k, ma gzip non la possiede!

Ora vediamo alcuni esempi. Supponiamo che vogliate comprimere con bzip2 tutti i file della directory attuale il cui nome finisce per .txt; userete quindi:

$ bzip2 -9 *.txt

Supponiamo che vogliate condividere il vostro archivio di immagini con qualcuno che non possiede bzip2, ma solo gzip. Non è necessario decomprimere l'archivio e poi ricomprimerlo, potete semplicemente decomprimerlo sullo standard output, usare una pipe, comprimere dallo standard input e redirigere l'uscita verso il nuovo archivio:

bzip2 -dc images.tar.bz2 | gzip -9 >images.tar.gz

Ecco fatto. Avreste anche potuto scrivere bzcat invece di bzip2 -dc. Esiste anche un equivalente per gzip, ma il suo nome è zcat, e non gzcat. Avete anche a disposizione bzless (e rispettivamente zless) se volete visualizzare direttamente un file compresso, senza doverlo prima decomprimere. Come esercizio, provate a trovare il comando da usare per visualizzare file compressi senza prima decomprimerli, e senza usare bzless o zless :-)


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/