Come comprimere e decomprimere i file usando tar su Linux

Contenuti

Tar è più di una semplice utility di archiviazione: tar è dotato di alcune fantastiche funzioni integrate, che consentono di comprimere e decomprimere i file, allo stesso tempo li archivi. Scopri tutto su di esso in questo post e altro ancora!!

Che cos'è catrame e come posso installarlo?

Secondo il catrame Per stampare su entrambi i lati del foglio per un unico lavoro di stampa (a cui è possibile accedere digitando man tar una volta installato), TAR è un'utilità di file. Supporta molte funzionalità, inclusa la compressione e la decompressione dei file al volo durante l'archiviazione. Iniziamo installando catrame:

Installare catrame sulla tua distribuzione Linux basata su Debian / apt (come Ubuntu e Mint), esegui il seguente comando nel tuo terminale:

sudo apt install tar

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

sudo yum install tar

Prossimo, Creeremo alcuni dati di esempio:

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

Configura i dati di esempio da comprimere

Qui creiamo un test di directory e creiamo sei file vuoti al suo interno usando il touch comando. Aggiungiamo anche alcuni numeri ai file. un, me, e B, anche se notevolmente file B ha dati ripetuti, che si comprimerà bene.

Per ulteriori informazioni su come funziona la compressione, puoi controllare il nostro Come funziona la compressione dei file?? inviare.

Crea un file non compresso

Creazione semplice di archivi tar non compressi

tar -hcf all_files.tar *
ls -l | grep -v totale | imbarazzante '{Stampa $5"tbyte per: "$9}' | sort -n

Qui creiamo un file non compresso usando il tar -hcf all_files.tar * comando. Diamo un'occhiata alle alternative utilizzate in questo comando.

Primo, avere -h che anche se non è necessario in questa particolare circostanza, Mi raccomando di includere sempre nel tuo tar comandi. Questa opzione significa dereferenziazione, che rimuoverà il riferimento (o continuerà) collegamenti simbolici, archiviare e scaricare i file a cui puntano.

Successivamente abbiamo il -c e -f opzioni. Si prega di notare che sono scritti solo in combinazione con il - Su -h, In altre parole, invece di specificarne un altro -, li tagghiamo semplicemente nelle altre opzioni di stenografia. facile e veloce.

il -c supporto opzionale per crea un nuovo file. Notare che, per impostazione predefinita, le directory sono archiviate in modo ricorsivo, a meno che non venga utilizzata anche l'opzione –no-recursion. il -f L'opzione ci permette di specificare il nome del file. Perché, deve essere l'ultimo nella nostra catena di alternative (visto che hai bisogno di un'opzione) così possiamo aggiungere il nome del file di archivio direttamente dietro di esso. Usando tar -fch test.tar * non funzionerà:

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

Dopo che il catrame è stato generato, usiamo un ls output che ci mostra chiaramente il numero di byte per file. Come potete vedere, Il file tar è molto più grande di tutti i nostri file combinati. I file vengono semplicemente archiviati e un po 'di sovraccarico per catrame è in fase di aggiunta.

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

file c
file b
file all_files.tar

Utilizzo del file per visualizzare il tipo di file

Crea un file non compresso

Un algoritmo di compressione molto comune è GZIP. Aggiungiamo l'opzione per lo stesso (-z) alla nostra catena di alternative da riga di comando abbreviate e vedere come questo influisce sulla dimensione del file:

tar -zhcf all_files.tar.gz [a-f]
ls -l | grep -v totale | imbarazzante '{Stampa $5"tbyte per: "$9}' | sort -n

Guardando la dimensione di un file compresso rispetto a un file non compresso

Questa volta specifichiamo un'espressione regolare per usare solo i file nominati un per F, impedendo il tar comando per includere il all_files.tar file all'interno del nuovo all_files.tar.gz procedimento!

Guarda come viene effettivamente utilizzata Regex? e Modifica il testo usando regex usando sed se vuoi saperne di più su regex.

Includiamo anche il -z opzione che utilizzerà la compressione GZIP per comprimere il risultato .tar file dopo che il dump dei dati è completo. È bello vedere che ci ritroviamo con un file di 186 byte, cosa ci dice che, in questa circostanza, il tar L'intestazione / sovraccarico di circa 10 Kb può essere compresso molto bene.

La dimensione totale del file è 7,44 volte più grande della dimensione totale del file, ma importa poco, poiché questo esempio fittizio non è rappresentativo della compressione di file di grandi dimensioni in cui si vedono quasi sempre guadagni piuttosto che perdite, a meno che i dati non siano precompressi o di un formato tale da non poter essere facilmente condensati utilizzando una serie di algoritmi. Comunque, un algoritmo (come GZIP) potrebbe essere meglio di un altro (ad esempio BZIP2), e viceversa, per diversi set di dati.

Ottieni più byte attraverso la compressione di alto livello

Possiamo rendere il file ancora più piccolo?? e. Possiamo determinare l'opzione di compressione massima di GZIP usando il -I opzione a tar che ci permette di specificare un programma di compressione da usare (con grazie a stack overflow idee utente man42):

tar -I 'gzip -9' -hcf all_files.tar.gz [a-f]
ls -l | grep -v totale | imbarazzante '{Stampa $5"tbyte per: "$9}' | sort -n

Utilizzo dell'opzione -I su tar per specificare una pianificazione di compressione

Qui specifichiamo -I 'gzip -9' come programma di compressione da usare, e lasciamo cadere il -z opzione (poiché ora stiamo specificando un programma personalizzato specifico da utilizzare invece di utilizzare la configurazione GZIP integrata di tar). Il risultato è che abbiamo 12 byte in meno come risultato di un migliore tentativo di compressione (ma generalmente più lento) (sul livello -9) di GZIP.

In termini generali, più veloce è la compressione (livello inferiore di tentativi di compressione, In altre parole, -1), file di dimensioni maggiori. E, più lenta è la compressione (più alto livello di tentativi di compressione, In altre parole, -9), più piccolo è il file. È possibile determinare le proprie preferenze variando il livello di compressione del -1 (Presto) un -9 (Lento)

Altri programmi di compressione

Esistono altri due algoritmi di compressione comuni che possono essere esplorati e testati. (opzioni di algoritmo diverse danno anche risultati di dimensioni diverse e possono avere opzioni di compressione aggiuntive), e questo è bzip2, che può essere utilizzato specificando il -j opzione a tar, e XZ che può essere utilizzato specificando il -J opzione.

In alternativa, puoi usare il -I comando per determinare le alternative di compressione massima per bzip2 (-9):

esempio di programma di compressione bzip -9

E -9e di xz:

esempio di programma di compressione xz -9e

Come potete vedere, i risultati sono meno buoni in questa circostanza rispetto all'utilizzo dell'algoritmo GZIP alquanto standard. Comunque, il bzip2 e xz gli algoritmi possono mostrare miglioramenti con altri set di dati.

Decomprimi un file

Decomprimere un file è molto semplice, qualunque sia il metodo originale per comprimerlo, e fintanto che detto algoritmo di compressione è presente sul tuo computer. Come esempio, se l'algoritmo di compressione originale era bzip2 (indicato da a .bz2 estensione al nome del file tar), allora vorrai averlo fatto sudo apt install bzip2 (oh sudo yum install bzip2) sul computer di destinazione, ovvero decomprimere il file.

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

Decomprimere un file tar compresso (o non compresso)

Specifichiamo semplicemente -x per espandere o decomprimere il nostro all_files.tar.gz e indicare il nome del file utilizzando il comando -f opzione stenografia come prima.

La compressione dei file può aiutarti a risparmiare molto spazio sui tuoi dispositivi di archiviazione e sapere come usarli. tar in combinazione con le alternative di compressione disponibili ti aiuterà a farlo. Una volta che il file deve essere riestratto, è facile farlo purché il software di decompressione corretto sia disponibile sul computer utilizzato per decomprimere o estrarre i dati dal tuo archivio. Godere!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.