Come comprimere e decomprimere file con Gzip su Linux

0
146
fatmawati achmad zaenuri/Shutterstock.com

Ci sono molte utilità di compressione dei file, ma quella che sicuramente troverai su ogni distribuzione Linux è gzip. Se impari a usare un solo strumento di compressione, dovrebbe essere gzip .

RELAZIONATO: Come funziona la compressione dei file?

Algoritmi e alberi

Lo strumento di compressione dei dati gzip è stato scritto all'inizio degli anni '90 e si trova ancora in ogni distribuzione Linux. Sono disponibili altri strumenti di compressione, ma indipendentemente dal computer Linux su cui ti trovi a dover lavorare, troverai gzip su di esso. Quindi, se sai come usare gzip, sei a posto senza dover installare nulla.

gzip è un'implementazione dell'algoritmo DEFLATE che è stato inventato e brevettato da Phil Katz di fama PKZIP. L'algoritmo DEFLATE ha migliorato i precedenti algoritmi di compressione che operavano tutti su variazioni di un tema. I dati da comprimere vengono scansionati e le stringhe univoche vengono identificate e aggiunte a un albero binario.

Le stringhe univoche ricevono un token ID univoco in virtù della loro posizione nell'albero. I token vengono utilizzati per sostituire le stringhe nei dati e, poiché i token sono più piccoli dei dati che hanno sostituito, il file viene compresso. Sostituendo i token con le stringhe originali, i dati tornano al loro stato non compresso.

RELATEDBenchmarked: qual è il miglior formato di compressione dei file?

L'algoritmo DEFLATE ha aggiunto la svolta che alle stringhe incontrate più frequentemente sono stati allocati i token più piccoli e alle stringhe incontrate meno frequentemente sono stati allocati quelli più grandi. L'algoritmo DEFLATE incorporava anche idee da due metodi di compressione precedenti, la codifica Huffman e la compressione LZ77.

Al momento in cui scrivo, l'algoritmo DEFLATE ha quasi tre decenni. Tre decenni fa i costi di archiviazione dei dati erano elevati e le velocità di trasmissione lente. La compressione dei dati era di vitale importanza.

RELATED4 modi per liberare spazio su disco su Linux

L'archiviazione dei dati è molto più economica oggi e le velocità di trasmissione sono di ordini di grandezza superiori. Ma abbiamo molti più dati da archiviare e in tutto il mondo le persone accedono ai servizi di cloud storage e streaming. La compressione dei dati è ancora di vitale importanza, anche se tutto ciò che stai facendo è ridurre qualcosa che devi caricare o trasmettere, o stai cercando di recuperare spazio su un disco rigido locale.

< h2 id="the-gzip-command">Il comando gzip

Più grande è un file, migliore può essere la compressione. Ciò è dovuto a due motivi. Uno è che ci saranno molte sequenze ripetute e identiche di byte in un file di grandi dimensioni. Il secondo motivo è che l'elenco di stringhe e token deve essere archiviato nel file compresso in modo che possa aver luogo la decompressione. Con un file molto piccolo, l'overhead può cancellare i vantaggi della compressione. Ma anche con un file abbastanza piccolo, è probabile che ci sia una riduzione delle dimensioni.

Compressione di un file

Per comprimere un file, tutto ciò che devi fare è passare il nome del file al comando gzip. Verificheremo le dimensioni originali del file, lo comprimeremo e quindi verificheremo le dimensioni del file compresso.

ls -lh calc-sheet.ods gzip calc-sheet.ods ls -lh cal-*

Il file originale, un foglio di calcolo chiamato “calc-sheet. ods” è 11 KB e il file compresso—noto anche come file di archivio—è 9,3 KB. Si noti che il nome del file di archivio è il nome del file originale con “.gz” aggiunto ad esso.

Il primo utilizzo del comando ls ha come destinazione un file specifico, il foglio di calcolo. Il secondo utilizzo di ls cerca tutti i file che iniziano con “calc-” ma trova solo il file compresso. Questo perché, per impostazione predefinita, gzip crea il file di archivio ed elimina il file originale.

Pubblicità

Non è un problema. Se hai bisogno del file originale puoi recuperarlo dal file di archivio. Ma se preferisci conservare il file originale, puoi usare l'opzione -k (mantieni).

gzip -k calc-sheet.ods ls -lh calc-sheet.*

Questa volta viene mantenuto il file ODS originale.

Decompressione di un File

Per decomprimere un file di archivio GZ, usa l'opzione -d (decomprimi). Questo estrarrà il file compresso dall'archivio e lo decomprimerà in modo che sia indistinguibile dal file originale.

ls calc-sheet.* gzip -d calc-sheet.ods.gz ls calc-sheet.*

Questa volta, possiamo vedere che gzip ha eliminato il file di archivio dopo aver estratto il file originale. Per conservare il file di archivio, dobbiamo usare di nuovo l'opzione -k (mantieni), così come l'opzione -d (decomprimi).

ls calc-sheet.* gzip -d calc-sheet.ods.gz ls calc-sheet.*

Questa volta, gzip non eliminare il file di archivio.

RELAZIONATO: Perché è possibile recuperare i file eliminati e come prevenirlo

Decompressione e sovrascrittura

Se tenti di estrarre un file in una directory in cui esiste il file originale—o un file diverso con lo stesso—,  gzip  ti chiederà di scegliere di abbandonare l'estrazione o per sovrascrivere il file esistente.

gzip -d text-file.txt.gz

Se sai in anticipo che sei felice di avere il file nella directory sovrascritto dal file dell'archivio, usa l'opzione -f (force).

gzip -df text-file.txt.gz

Il file è stato sovrascritto e si è tornati silenziosamente al comando line.

Compressione degli alberi di directory

L'opzione -r (ricorsiva) fa sì che gzip comprima i file in un intero albero di directory. Ma il risultato potrebbe non essere quello che ti aspetti.

Pubblicità

Ecco l'albero delle directory che useremo in questo esempio. Ciascuna directory contiene un file di testo.

tree level1

Let& #8217;s usa gzip nell'albero delle directory e guarda cosa succede.

gzip -r level1/tree level1

Il risultato è che gzip ha creato un file di archivio per ogni file di testo nella struttura della directory. Non ha creato un archivio dell'intero albero delle directory. In effetti, gzip può inserire solo un singolo file in un archivio.

Possiamo creare un file di archivio che contenga un albero di directory e tutti i suoi file, ma dobbiamo attivare un altro comando. Il programma tar viene utilizzato per creare archivi di molti file, ma non ha le proprie routine di compressione. Ma utilizzando le opzioni appropriate con tar, possiamo fare in modo che tar esegua il push del file di archivio tramite gzip. In questo modo otteniamo un file di archivio compresso e un archivio multifile o multidirectory.

tar -czvf level1.tar.gz level1

Le opzioni tar sono:

  • c: crea un archivio.
  • z: invia i file tramite gzip.
  • v: modalità dettagliata. Stampa nella finestra del terminale cosa sta facendo tar.
  • f level1.tar.gz: nome file da usare per il file di archivio.

Questo archivia la struttura dell'albero delle directory e tutti i file all'interno dell'albero delle directory.

CORRELATI: Come comprimere ed estrarre file usando il comando tar su Linux

Ottenere informazioni sugli archivi

L'opzione -l (list) fornisce alcune informazioni su un file di archivio. Mostra le dimensioni compresse e non compresse del file nell'archivio, il rapporto di compressione e il nome del file.

gzip -l leve1.tar.gz gzip -l text-file.txt.gz

Pubblicità

Puoi verificare l'integrità di un file di archivio con l'opzione -t (test).

gzip -t level1.tar.gz

Se tutto va bene, si torna alla riga di comando in silenzio. Nessuna notizia è una buona notizia.

Se l'archivio è corrotto o non è un archivio te ne viene detto.

gzip -t not-an-archive.gz

Velocità contro compressione

Puoi scegliere di dare priorità alla velocità di creazione dell'archivio o al grado di compressione. Puoi farlo fornendo un numero come opzione, da -1 fino a -9 in alto. L'opzione -1 offre la velocità più alta sacrificando la compressione e -9 offre la compressione più alta sacrificando la velocità.

A meno che tu non fornisca una di queste opzioni, gzip usa -6.

gzip -1 calc-sheet.ods ls -lh calc-sheet.ods.gz gzip -9 calc-sheet.ods ls -lh calc-sheet.ods.gz gzip -6 calc-sheet.ods ls -lh calc-sheet .ods.gz

Pubblicità

Con un file piccolo come questo , non abbiamo notato differenze significative nella velocità di esecuzione, ma c'era una piccola differenza nella compressione.

È interessante notare che non vi è alcuna differenza tra l'utilizzo della compressione di livello 9 e la compressione di livello 6. Puoi solo estrarre così tanta compressione da un dato file e in questo caso, quel limite è stato raggiunto con la compressione di livello 6. Aumentare fino a 9 non ha comportato un'ulteriore riduzione della dimensione del file. Con file più grandi, la differenza tra il livello 6 e il livello 9 sarebbe più pronunciata.

Compresso, non protetto

Don&#8217 ;t scambiare la compressione con la crittografia o qualsiasi forma di protezione. La compressione di un file non gli conferisce sicurezza o privacy migliorata. Chiunque abbia accesso al tuo file può usare gzip per decomprimerlo.

RELAZIONATO: Elenca i 10 file o directory più grandi su Linux

LEGGI AVANTI

  • › Che cosa significa “ISTG” Significa, e come lo usi?
  • › Perché dovresti smettere di guardare Netflix in Google Chrome
  • › Recensione di Joby Wavo Air: il microfono wireless ideale di un creatore di contenuti
  • › Ogni logo aziendale Microsoft dal 1975 al 2022
  • › Per quanto tempo il mio telefono Android sarà supportato con gli aggiornamenti?
  • › Come creare il tuo disco rigido esterno (e perché dovresti)