domenica 14 dicembre 2008

Archiviazione e compressione in Linux

Ormai con Ubuntu comprimere una cartella o più file in un archivio compresso è una cosa semplicissima: clic destro e via. Ma sicuramente chi usa GNU/Linux non si ferma all’immediatezza dell’operazione, ma vuole andare a fondo e capire cosa succede quando si fa clic sulla voce di menu Crea archivio…

Anzitutto bisogna distinguere tra archiviazione e compressione. L’archiviazione consente di raccogliere senza comprimerli tanti file in uno unico, in modo da consentire una trasportabilità più comoda e veloce (una cosa è trasportare diecimila file che pesano 5 mega e una cosa è trasportare un file che pesa 5 mega). La compressione, invece, rende addirittura più piccolo il file d’archivio e dunque assicura una velocità di trasferimento ancora maggiore.

Archiviare i file

Archiviare i file (mettere tanti file in un unico file) è un po’ come metterli in una cartella, col vantaggio però di avere come risultato un file singolo. Lo strumento usato su Linux per fare questa operazione è tar, un acronimo di “tape archive”. Un aspetto importante di tar è che con l’archiviazione non si perdono le informazioni dei file, come data e ora, utente, gruppo, permessi e struttura delle cartelle.

La sintassi per archiviare è la seguente:

tar -cf archivio.tar file1 file2 file3

con cui si riuniscono file1, file2 e file3 nell’unico file archivio.tar. La lettera c indica “crea”, mentre f sta per “file”.

Per archiviare un’intera cartella la sintassi è la stessa:

tar cf archivio.tar directory

Per estrarre i file la sintassi è:

tar xf archivio.tar

Comprimere i file

I file possono essere compressi in Linux con due strumenti: gzip e bzip2. La differenza tra i due è che bzip2 restituisce file più piccoli (e dunque richiede maggiore potenza di calcolo). La sintassi è la stessa per entrambi (cambiando ovviamente il comando):

gzip file1

che produce il file1.gz e

bzip2 file1

che produce il file1.bz2

Fate attenzione al fatto che questi due strumenti “trasformano” il file, nel senso che cancellano quello originale, lasciando solo la copia compressa.

La decompressione si effettua rispettivamente con

gunzip file1.gz

e

bunzip2 file1.bz2

eliminando anche qui il file compresso e lasciando solo quello originale.

Comprimere e decomprimere gli archivi

Anche gli archivi .tar possono essere a loro volta compressi come un qualunque altro normalissimo file. La sintassi è la stessa identica e quindi i passaggi sono due: archiviazione dei singoli file e successiva compressione dell’archivio.

tar cf archivio.tar file1 file2 file3
gzip archivio.tar

che restituisce il file archivio.tar.gz
oppure

bzip2 archivio.tar

che restituisce il file archivio.tar.bz2

Si possono anche dare i due comandi in un’unica riga:

tar cf - file1 file2 file3 | gzip -c > archivio.tar.gz

oppure più comodamente, per gzip:

tar czf archivio.tar.gz file1 file2 file3

per bzip2:

tar cjf archivio.tar.gz file1 file2 file3

Per la decompressione, però, è sufficiente un solo comando. Per il primo file:

tar zxf archivio.tar.gz

Per il secondo:

tar jxf archivio.tar.bz2

Le opzioni significano nell’ordine: z è un file compresso con gzip (j invece compresso con bzip2), x estrai, f indica il nome del file.

Si ponga attenzione al fatto che con gzip e bzip2 non è possibile comprimere più file in un’unico: ecco perché è necessario passare da tar prima di comprimere più file assieme.

Un’ultima nota sulle estensioni. Un file .tar.gz può presentarsi anche con l’estensione .tgz, mentre uno .tar.bz2 anche come.tbz2. Ma potrebbero anche non avere alcuna estensione! Se vi dovesse capitare un file compresso senza estensione, è sufficiente dare

file nome-file-misterioso

per capire di che tipo si tratti.

Nessun commento: