Micro guida all'archiviazione e alla compressione dei file sotto Linux

Spesso abbiamo neccessita' di comprimere dei file. Ad esempio, se vogliamo spedire come allegato di un messaggio di posta ele
ttronica un file e' buona norma comprimerlo, in modo da diminuire il tempo di trasferimento. Per comprimere un singolo file e
sistono varie utility tra cui spicca il noto gzip.

Sia prova.ps il file che vogliamo comprimere. Utilizando gzip dobbiamo scrivere

$ gzip prova.ps

Dopo la sua esecuzione possiamo vedere come il file prova.ps e' stato sostituito dal file prova.ps.gz. Un opzione di gzip e'
la seguente
-9 che forza gzip a usare il piu' alto fattore di compressione

Per decomprimere i file compressi con gzip dobbiamo far ricorso a gunzip. Sia prova.ps.gz il nostro file compresso per decomp
rimerlo dobbiamo digitare da console:

$ gunzip prova.ps.gz

Ovviamente tramite i caratteri jolly comprimiamo o decomprimiamo piu' file alla volta. Il risultato di esecuzioni di questo t
ipo generera' sempre singoli file compressi. Se vogliamo ad esempio spedire via posta elettronica l'intero contenuto di una d
irectory dobbiamo allegare al messaggio ogni singolo file compresso. Dato che questa operazione e' di per se molto scomoda e
noiosa possiamo ricorrere al comando tar che ci permette di impacchettare piu' file in un unico archivio. "tar" di per se non
effettua nessuna compressione, limitandosi ad accorpare i file. Se vogliamo archiviare i file della directory ~/public_html
in un unico file compresso basta eseguire i seguenti comandi

$ tar -c archivio.tar ~/public_html
$ gzip archivio.tar

Alla fine dell'esecuzione dei due comandi abbiamo ottenuto un file archivio.tar.gz. Questa sequenza di comandi e' equivalente
a tar richiamato con l'opzione -z che attiva la compressione automatica:

$ tar -c -f /tmp/archivio.tgz -z -v /usr

In questo caso il risultato dell'esecuzione di questo comando e' il file archivio.tgz. Il ripristino dei file originari avvie
ne tramite tar richiamato con l'opzione -x

$ tar -xvvf foo.tar
estrae l'archivio foo.tar

$ tar -xvvzf foo.tar.gz
estrae l'archivo foo.tar.gz

Per archiviare una directory in spezzoni di una certa dimensione (ad esempio 1.44 Mb) si richiama tar con le opzioni -L 1440
e -M

$ tar -c -f /dev/fd0 -L 1440 -M -v /usr

In alternativa si puo' creare un archivio .tar (o .tgz o .tar.gz) e poi richiamare il comando split. Rimandiamo al manuale di
tar e di split per ulteriori approfondimenti.
Per comprimere i file esistono anche altri programmi come bzip2 (probabilemente il programma di compressione piu' efficiente)
e il famoso zip. La sintassi di bzip2 e' molto simile a quella di gzip:

$ bzip2 esempio.txt

in questo caso viene generato un file esempio.txt.bz2.
zip e' invece l'utility di compressione e di archiviazione usata anche in Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Atari,
Macintosh, Amiga e Acorn RISC OS. Infatti pone direttamente in un archivio compresso uno o piu' file. Il seguente comando co
mprime in un unico file tutta la directory home e tutte le sue sottodirectory

$ zip -r prova.zip ~

Per decomprimere un .zip si utilizza il corrispondente unzip

$ unzip prova.zip

che decomprime i file e le directory contenute nel'archivio.