Come comprimere e decomprimere file usando tar in Linux – –

Shutterstock / iunewind

Tar è più di una semplice utility di archiviazione: tar viene fornito con alcune fantastiche funzionalità incorporate, che consentono di comprimere e decomprimere i file, contemporaneamente all’archiviazione. Scopri tutto in questo articolo e altro ancora!

Cos’è tar e come si installa?

Come per il manuale di tar (a cui puoi accedere digitando man tar una volta installato), tar è un’utilità di archiviazione. Supporta molte funzionalità, inclusa la compressione e la decompressione dei file al volo durante l’archiviazione. Cominciamo installando tar:

Per installare tar sulla tua distribuzione Linux basata su Debian / Apt (come Ubuntu e Mint), esegui il seguente comando nel tuo terminale:

sudo apt install tar

Per installare tar sulla tua distribuzione Linux basata su RedHat / Yum (come RHEL, Centos e Fedora), esegui il seguente comando nel tuo terminale:

sudo yum install tar

Successivamente, creeremo alcuni dati di esempio:

mkdir test; cd test
touch a b c d e f 
echo 1 > a; echo 5 > e; echo '22222222222222222222' > b

Configurazione dei dati di esempio da comprimere

Qui abbiamo creato un test di directory e abbiamo creato sei file vuoti utilizzando il comando touch. Abbiamo anche aggiunto alcuni numeri ai file a, eeb, sebbene in particolare il file b contenga dati ripetitivi, che si comprimeranno bene.

Se desideri saperne di più su come funziona la compressione, puoi controllare il nostro Come funziona la compressione dei file? articolo.

Creazione di un archivio non compresso

Semplice creazione di archivi tar non compressi

tar -hcf all_files.tar *
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Qui abbiamo creato un archivio non compresso usando il comando tar -hcf all_files.tar *. Diamo un’occhiata alle opzioni utilizzate in questo comando.

In primo luogo, abbiamo -h che sebbene non sia richiesto in questo caso particolare, consiglio vivamente di includere sempre nei tuoi comandi tar. Questa opzione sta per dereference, che dereferenzierà (o seguirà) i collegamenti simbolici, archiviando e scaricando i file a cui puntano.

Successivamente abbiamo le opzioni -c e -f. Nota che sono scritti solo insieme a – in -h, cioè invece di specificarne un altro -, li taggiamo semplicemente sulle altre opzioni abbreviate. Facile e veloce.

L’opzione -c sta per creare un nuovo archivio. Notare che per impostazione predefinita le directory vengono archiviate in modo ricorsivo, a meno che non venga utilizzata anche un’opzione –no-recursion. L’opzione -f ci permette di specificare il nome dell’archivio. Deve quindi essere l’ultimo nella nostra catena di opzioni (poiché richiede un’opzione) in modo da poter aggiungere il nome del file di archivio direttamente dietro di esso. L’uso di tar -fch test.tar * non funzionerà:

Le opzioni stenografiche che richiedono un'opzione non possono essere posizionate in primo piano

Dopo che il tar è stato generato, usiamo un output ls modificato che ci mostra chiaramente il numero di byte per file. Come puoi vedere, il file tar è molto più grande di tutti i nostri file combinati. I file vengono semplicemente archiviati e viene aggiunto un sovraccarico generale per tar.

Come nota a margine interessante, possiamo anche vedere con quali tipi di file stiamo lavorando semplicemente usando il comando file al prompt dei comandi:

file c
file b
file all_files.tar

Utilizzo di file per vedere il tipo di file

Creazione di un archivio non compresso

Un algoritmo di compressione molto comune è GZIP. Aggiungiamo l’opzione per lo stesso (-z) alla nostra catena di opzioni della riga di comando abbreviata e vediamo come questo influisce sulla dimensione del file:

tar -zhcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Guardando la dimensione di un archivio compresso rispetto a uno non compresso

Questa volta abbiamo specificato un’espressione regolare per utilizzare solo i file con nome da a ad f, impedendo al comando tar di includere il file all_files.tar all’interno del nuovo file all_files.tar.gz!

Vedi come usi effettivamente le espressioni regolari? e Modifica testo usando espressioni regolari usando sed se vuoi saperne di più sulle espressioni regolari.

Abbiamo anche incluso l’opzione -z che utilizzerà la compressione GZIP per comprimere il file .tar risultante una volta completato lo scarico dei dati. È bello vedere che ci ritroviamo con un file di 186 byte, il che ci dice che – in questo caso – l’intestazione / overhead tar di circa 10Kb può essere compresso molto bene.

La dimensione totale dell’archivio è 7,44 volte più grande della dimensione totale del file, ma ha poca importanza poiché questo esempio fittizio non è rappresentativo della compressione di file di grandi dimensioni in cui si vedono quasi sempre guadagni anziché perdite, a meno che i dati non siano stati precompressi o lo siano di un formato tale da non poter essere condensato facilmente utilizzando una varietà di algoritmi. Tuttavia, un algoritmo (come quello GZIP) potrebbe essere migliore di un altro (come ad esempio BZIP2) e viceversa, per diversi set di dati.

Guadagnare più byte utilizzando la compressione di alto livello

Possiamo rendere il file ancora più piccolo? Sì. Possiamo impostare l’opzione di compressione massima di GZIP usando l’opzione -I di tar che ci permette di specificare un programma di compressione da usare (con grazie a stackoverflow user ideasman42):

tar -I 'gzip -9' -hcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Usare l'opzione -I per tar per specificare un programma di compressione

Qui abbiamo specificato -I ‘gzip -9’ come programma di compressione da usare e abbiamo abbandonato l’opzione -z (poiché ora stiamo specificando uno specifico programma personalizzato da usare invece di usare la configurazione tar GZIP incorporata). Il risultato è che abbiamo 12 byte in meno come risultato di un tentativo di compressione migliore (ma generalmente più lento) (a livello -9) da parte di GZIP.

In generale, più veloce è la compressione (livello inferiore di tentativi di compressione, ovvero -1), maggiore sarà la dimensione del file. E, più lenta è la compressione (livello più alto di tentativi di compressione, cioè -9), più piccolo è il file. Puoi impostare le tue preferenze variando il livello di compressione da -1 (veloce) a -9 (lento)

Altri programmi di compressione

Ci sono altri due algoritmi di compressione comuni che si possono esplorare e testare (diverse opzioni di algoritmo danno anche risultati di dimensionamento diversi e possono avere opzioni di compressione aggiuntive), e questo è bzip2, che può essere utilizzato specificando l’opzione -j per tar XZ che può essere utilizzato specificando l’opzione -J.

In alternativa, puoi usare il comando -I per impostare le opzioni di compressione massime per bzip2 (-9):

bzip -9 esempio di programma di compressione

E -9e per xz:

xz -9e esempio di programma di compressione

Come puoi vedere, i risultati sono meno buoni in questo caso rispetto all’utilizzo dell’algoritmo GZIP piuttosto standard. Tuttavia, gli algoritmi bzip2 e xz possono mostrare miglioramenti con altri set di dati.

Decompressione di un file

Decomprimere un file è semplicissimo, qualunque fosse il metodo originale per comprimerlo, a condizione che tale algoritmo di compressione sia presente sul tuo computer. Ad esempio, se l’algoritmo di compressione originale era bzip2 (indicato da un’estensione .bz2 al nome del file tar), allora vorrai aver eseguito sudo apt install bzip2 (o sudo yum install bzip2) sul tuo computer di destinazione che è quello di decomprimere il file.

rm a b c d e f
tar -xf all_files.tar.gz
ls

Decomprimere un archivio tar compresso (o non compresso)

Specifichiamo semplicemente -x per espandere o decomprimere il nostro file all_files.tar.gz e indicare qual è il nome del file usando di nuovo l’opzione abbreviata -f come prima.

La compressione dei file può aiutarti a risparmiare molto spazio sui tuoi dispositivi di archiviazione e sapere come usare tar in combinazione con le opzioni di compressione disponibili ti aiuterà a farlo. Una volta che l’archivio deve essere estratto nuovamente, è facile farlo a condizione che il software di decompressione corretto sia disponibile sul computer utilizzato per decomprimere o estrarre i dati dall’archivio. Godere!