Con il comando gzip su Linux possiamo comprimere singoli file per generare file .gz. Lo stesso comando ci permette anche di decomprimere i file per farli tornare al loro stato iniziale.
In questo articolo ti mostrerò come usare il comando gzip e vedremo come comprimere più file, intere cartelle e archivi. Ti mostrerò anche le opzioni principali che ha il comando e che ci permettono di modificare anche il livello di compressione ottenuto.
Iniziamo!
Table of Contents
Sintassi del comando gzip
Il comando gzip sta per GNU Gzip e ci permette di comprimere e decomprimere singoli file.
Usando questo comando viene creato un file compresso con estensione .gz. Dopo la compressione, gli attributi del file originale vengono mantenuti, in particolare avremo gli stessi:
- data di modifica;
- data di accesso;
- proprietà e permessi del file.
Se vuoi approfondire questi tipi di attributi, controlla le nostre guide al comando touch (per i timestamp), al comando chown (per la proprietà) e a chmod (per i permessi dei file).
Attraverso la compressione, la dimensione del file viene ridotta ma non ci sono perdite di dati.
Approfondimento: il tipo di compressione usata da gzip si basa sull’algoritmo Deflate basato a sua volta su quello Lempel-Ziv LZ77.
La sintassi di base del comando gzip è questa:
gzip [opzioni] nome-file
Se volessi comprimere il file “nuovo.txt”, mi basterebbe usare il comando in questo modo:
gzip nuovo.txt
In questo modo otterrei il file compresso e rinominato “nuovo.txt.gz“, mentre il file originale verrebbe eliminato.
Da qui in avanti vedremo diversi casi specifici e come utilizzare le opzioni del comando gzip, in questo modo comprenderai meglio come usarlo per diversi scopi.
Prima, però, vediamo quali sono le differenze tra gzip e un altro comando collegato: tar.
Differenze tra gzip e tar
I comandi gzip e tar sono associati, ma non hanno lo stesso funzionamento.
Con il comando gzip possiamo comprimere (o decomprimere) singoli file.
Invece, il comando tar ci permette di creare degli archivi al cui interno possiamo inserire file e cartelle, mantenendo la struttura originale.
Gli archivi prodotti dal comando tar non sono compressi. Ed è proprio qui che diventa chiaro il collegamento tra i due comandi:
possiamo utilizzare gzip per comprimere gli archivi creati con tar.
Questo infatti è il metodo che ci permette di comprimere gli archivi:
- creare l’archivio con tar
- comprimere l’archivio con gzip.
Il risultato sarà quello di ottenere un file .tar.gz.
Tra gli esempi che vedremo in questo articolo, ti mostrerò anche come creare un archivio compresso.
Casi d’uso del comando gzip
Possiamo usare il comando gzip per:
- comprimere e decomprimere singoli file;
- comprimere (o decomprimere) più file con un solo comando;
- comprimere tutti i file all’interno di una cartella specifica;
- comprimere archivi tar.
Inoltre possiamo sfruttare le opzioni del comando gzip per mantenere il file originale dopo la compressione, cambiare il livello di compressione, visualizzare maggiori dettagli sui file compressi e forzare le operazioni.
Nelle prossime sezioni ti mostrerò come fare tutto ciò con degli esempi pratici.
Come comprimere un file
L’operazione basilare che ci permette di fare il comando gzip è quella di comprimere un file.
Per farlo ci basta usare il comando seguito dal nome del file.
Per comprimere il file appunti.txt, userò il comando in questo modo:
gzip appunti.txt

In questo esempio ho usato il comando ls -lh
prima e dopo del comando gzip, per avere informazioni sul peso del file:
- prima della compressione, il file originale si chiama “appunti.txt” e pesa 12Kb;
- dopo la compressione, vediamo che il file è stato compresso (peso 4,7Kb) e il nuovo nome del file è “appunti.txt.gz”.
Come puoi vedere da questo esempio, se usiamo il comando gzip senza opzioni, il file originale viene compresso e quindi alla fine avremo solo il file compresso.
Suggerimento: ho usato il comando ls con le opzioni -l
(per avere un elenco dettaglio) e -h
(per vedere la dimensione dei file in formato più leggibile, human redeable).
Come decomprimere un file
Se vogliamo decomprimere un file, vale a dire fare il processo inverso della compressione che abbiamo visto nell’esempio precedente, possiamo usare il comando gzip con l’opzione -d
.
gzip -d nome-file.gz
Nel caso del file precedente, userò:
gzip -d appunti.txt.gz

Il risultato è che avremo di nuovo il file originale (decompresso): appunti.txt.
In alternativa, per decomprimere un file gzip possiamo anche usare il comando gunzip, in questo modo:
gunzip nome-file.gz

Nel nostro esempio:
- ho compresso il file ricerca.txt con il comando gzip;
- con il comando gunzip l’ho decompresso.
Come comprimere più file
Come altri comandi Linux, anche gzip accetta più argomenti, in particolare possiamo fornire al comando una lista di file che vogliamo comprimere. In questo modo risparmiamo tempo perché non dobbiamo usare il comando gzip più volte.
Nel nostro esempio voglio comprimere tre file, per farlo uso il comando gzip seguito dai nomi dei file:
gzip appunti.txt file.txt nuovo.txt
Il risultato è che verranno creati tre file compressi:
- appunti.txt.gz
- file.txt.gz
- nuovo.txt.gz

Decomprimere più file
Possiamo fare la stessa procedura di decompressione per decomprimere in una sola volta più file compressi.
L’opzione da usare è quella che abbiamo visto per il singolo file, questa volta però dobbiamo indicare tutti i file che vogliamo decomprimere.
Nel mio caso, riprendo l’esempio precedente per decomprimere i file seguenti:
gzip -d appunti.txt.gz file.txt.gz nuovo.txt.gz
Il risultato sarà che avrò di nuovo i file originali (non compressi):
- appunti.txt
- file.txt
- nuovo.txt

In alternativa, posso usare il comando gunzip, proprio come abbiamo visto prima. Nel mio esempio il comando usato è questo:
gunzip appunti.txt.gz file.txt.gz nuovo.txt.gz
Il risultato è identico: i file indicati verranno decompressi.

Come comprimere i file contenuti in una cartella
Se vogliamo comprimere tutti i file che si trovano in una determinata cartella (compresi quelli che si trovano in eventuali sottocartelle), possiamo usare l’opzione -r
del comando gzip.
Nel mio esempio voglio comprimere tutti i file presenti nella cartella “appunti-maria” e nelle sottocartelle (in questo caso una sola sottocartella chiamata “nuovo”).
Per farlo mi sposto nella cartella superiore a quella che voglio comprimere e uso il comando gzip
con l’opzione -r
, così:
gzip -r appunti-maria
Poi verifico che tutti i file siano stati compressi usando il comando ls per vedere il contenuto della cartella e della sottocartella. Puoi notare che in questo esempio viene usato anche il comando cd che ci permette di spostarci da una cartella all’altra.

Come decomprimere i file contenuti in una cartella
Se vogliamo fare una decompressione ricorsiva di più file contenuti in una cartella, possiamo usare due opzioni del comando gzip:
- l’opzione
-r
che come abbiamo visto ci consente di usare il comando in modo ricorsivo; - l’opzione
-d
che permette la decompressione di file compressi.
Nel mio esempio userò la cartella appunti-maria all’interno della quale ci sono file compressi (anche contenuti in sottocartelle).
Il comando che ho usato è questo:
gzip -dr appunti-maria
Il risultato è che verranno decompressi:
- i file nella cartella “appunti-maria”;
- i file presenti in tutte le sottocartelle all’interno della cartella indicata (nel nostro esempio quelli presenti nell’unica sottocartella, “nuovo”).

Come comprimere un archivio
Come dicevamo nell’apertura di questo articolo, il comando gzip è correlato al comando tar.
Negli esempi che abbiamo visto, abbiamo compresso più file, ma il risultato che si ottiene con gzip è quello di avere file singoli compressi.
Un’altra alternativa che abbiamo è quella di creare un archivio di file (e/o cartelle) e poi comprimere direttamente l’archivio.
Per farlo possiamo prima utilizzare il comando tar
per creare l’archivio e poi il comando gzip
per la compressione.
Vediamo un esempio.
In questo caso voglio creare un archivio contenente la cartella “appunti-maria”, creando l’archivio verrà mantenuta tutta la struttura della cartella con eventuali sottocartelle.
Uso il comando tar in questo modo:
tar cf nome-archivio.tar nome-cartella
Nel mio esempio:
tar cf appunti.tar appunti-maria
Questo creerà un archivio con la cartella e tutto il suo contenuto, come si vede nell’esempio qui sotto:

A questo punto uso il comando gzip per comprimere l’archivio:
gzip appunti.tar

Il risultato sarà un archivio compresso: appunti.tar.gz.
Nota che in questo caso possiamo sfruttare anche direttamente l’opzione -z
del comando tar e creare un archivio compresso direttamente con il comando:
tar cfz appunti.tar.gz appunti-maria

Puoi notare che usando tar, a differenza di gzip, viene mantenuto anche il file originale. Nel primo esempio, dopo aver creato l’archivio, nella cartella avremo ancora la cartella appunti-maria oltre all’archivio contenente questa stessa cartella.
Vediamo come fare a mantenere i file originali anche con gzip.
Comprimere un file mantenendo l’originale
Se usiamo il comando gzip senza specificare le opzioni, come abbiamo visto in tutti gli esempi finora, i file che comprimiamo vengono compressi, mentre nella cartella non resta più il file originale.
Esempio:
- Contenuto iniziale della cartella:
- appunti.txt
- Uso il comando gzip per comprimere il file appunti.txt.
- Contenuto finale della cartella:
- appunti.txt.gz
Se, invece, vogliamo comprimere i file mantenendo anche una copia del file originale, possiamo usare il comando gzip con l’opzione -k.
Nel mio esempio uso il comando:
gzip -k appunti.txt
In questo modo alla fine avrò nella cartella due file:
- appunti.txt (file originale non compresso):
- appunti.txt.gz (file compresso).

Altre opzioni del comando gzip
Vediamo adesso come usare altre opzioni del comando gzip per compiere delle operazioni più avanzate come modificare il livello di compressione usato o avere dettagli sul file compresso.
Impostare un livello diverso di compressione
Quando ci troviamo a voler comprimere file molto grandi o se abbiamo necessità particolari, possiamo modificare il livello di compressione del comando gzip.
I livelli di compressione vanno da 1 a 9, dove:
- 1 – metodo più veloce, ma con minore compressione;
- 9 – metodo più lento, ma con la maggiore compressione.
Per impostazione predefinita, vale a dire se non modifichiamo questa opzione, il livello di compressione usato è 6.
Se vogliamo modificare il livello di compressione, possiamo farlo usando l’opzione -X
(dove X è il livello di compressione che vogliamo usare).
Per esempio usando il comando:
gzip -9 appunti.txt
In questo modo sto usando il livello di compressione maggiore.
Nell’esempio qui sotto ho creato una copia del file esempio.txt e usato due livelli di compressione diversi:
- il file originale pesa 68Kb
- con il livello 1 viene compresso a 8,8Kb;
- con il livello 9, passa a 5,2Kb.

Ottenere dettagli sul file compresso
Per avere dettagli sul file compresso possiamo usare l’opzione -l
o le opzioni -lv
.
Queste opzioni ci permettono di vedere informazioni come:
- la dimensione del file compresso (“compressed”);
- la dimensione del file non compresso (“uncompressed”);
- la percentuale di compressione (“ratio”);
- il nome del file non compresso;
- il metodo di compressione usato.
Qui sotto puoi vedere un esempio. Per usare le opzioni ti basta usare il comando gzip seguito dalle opzioni, così:
gzip -l nome-file.gz
gzip -lv nome-file.gz

Usare -lv
ci permette di ottenere informazioni aggiuntive, tra cui il metodo di compressione usato.
Comprimere i file forzando le sovrascritture
Di norma quando ci sono avvisi come ad esempio un file che rischia di venire sovrascritto, ci viene mostrato un prompt che ci invita a confermare o ad annullare l’operazione.
Nel mio esempio sto cercando di creare un file compresso esempio.txt.gz, ma nella cartella corrente esiste già un file con lo stesso nome. Nel primo caso, quindi, mi viene mostrato questo messaggio:
gzip: esempio.txt.gz already exists; do you wish to overwrite (y or n)? n
Possiamo scegliere se procedere e sovrascrivere il file (y), oppure annullare (n).
Se, invece, volessi evitare questi messaggi di conferma, potrei usare l’opzione -f
che mi consente di forzare l’azione, in questo caso la compressione del file e la sovrascrittura.
Nell’esempio, uso:
gzip -f esempio.txt
Il risultato è che viene creato il file esempio.txt.gz che va a sovrascrivere il file con lo stesso nome che era già presente nella cartella.

Conclusioni
Ora sai che con il comando gzip è possibile comprimere i file direttamente dal terminale. Possiamo usare il comando per comprimere un singolo file, una lista di file o tutto il contenuto di una cartella. Spesso è utile usare gzip insieme a tar (o direttamente tar con l’opzione che usa la compressione tramite gzip) se vogliamo comprimere interi archivi.
Conoscevi già questo comando? Facci sapere nei commenti come lo usi.
Lascia un commento