GNU/Linux >> Linux Esercitazione >  >> Linux

Pigz:comprimi e decomprimi file in parallelo in Linux

Pigz , abbreviazione di p arallel io implementazione di gz ip, è un'utilità di compressione multi-thread open source gratuita per comprimere e decomprimere file in Linux. Pigz, pronunciato come pig-zee , utilizza zlib e pthread librerie e sfrutta appieno più processori e più core durante la compressione dei dati. Poiché pigz si comprime utilizzando i thread per utilizzare più processori e core, può essere in grado di archiviare file più grandi molto più velocemente rispetto a gzip. Per dirla semplicemente, pigz fa quello che fa gzip, ma alloca il lavoro a più processori e core durante la compressione e accelera significativamente il processo di compressione/decompressione. In questa guida impariamo a comprimere e decomprimere file in parallelo usando Pigz in Linux.

Installa Pigz su Linux

Pigz è disponibile nei repository ufficiali dei più diffusi sistemi operativi Linux.

Su Arch Linux e le sue varianti come Manjaro Linux, abilita [Community] repository e installa Pigz usando il comando:

$ sudo pacman -S pigz

Su CentOS 8/7/6 :

$ sudo yum install pigz

Su Debian :

$ sudo apt-get install pigz

Su Fedora :

$ sudo dnf install pigz

Su Ubuntu , Linux Mint :

$ sudo add-apt-repository universe
$ sudo apt install pigz

Su openSUSE :

$ sudo zypper install pigz

Su altre distribuzioni Linux, compila e installa dal sorgente come mostrato di seguito.

Innanzitutto, assicurati di aver installato i seguenti prerequisiti:

  • fare
  • ccc
  • zlib-devel

Ad esempio, sui sistemi basati su Debian è possibile installare i pacchetti di cui sopra utilizzando il comando:

$ sudo apt install make gcc zlib-devel

Su sistemi basati su RPM:

$ sudo yum install make gcc zlib-devel

Quindi scarica l'ultima versione di Pigz dal sito ufficiale (il link è riportato alla fine):

$ wget https://zlib.net/pigz/pigz-2.4.tar.gz

Estrai il file pigz tar:

$ tar -xzvf pigz-2.4.tar.gz

Questo comando estrarrà il contenuto in una cartella denominata pigz-2.4 nella directory di lavoro corrente.

CD nella directory "pigz-2.4":

$ cd pigz-2.4

Compilalo e installalo usando il seguente comando:

$ make

Copia il binario pigz nel tuo $PATH, ad esempio /usr/local/bin :

$ sudo cp pigz /usr/local/bin/

Esci e accedi nuovamente per iniziare a utilizzare pigz.

Comprimi e decomprimi file in parallelo usando Pigz

Pigz divide l'input dato in 128 KB pezzi e comprime ciascuno di essi in parallelo. Il formato dei dati compressi generato è nel formato gzip, zlib o zip a ingresso singolo utilizzando il metodo di compressione deflate. Per impostazione predefinita, comprime il file gzip (.gz).

Lascia che ti mostri alcuni esempi pratici. Ai fini di questa guida, utilizzerò archlinux.iso file (dimensioni 677,4 MB ) per il test.

Comprimi file

Per comprimere un file con le opzioni predefinite, esegui semplicemente:

pigz <path-to-file>

Esempio:

$ pigz archlinux.iso

Il comando precedente comprimerà il file specificato, ad esempio archlinux.iso e salvalo come archlinux.iso.gz nella directory di lavoro corrente.

Si noti che il comando sopra eliminerà il file originale, ovvero archlinux.iso dopo averlo compresso. Se non vuoi eliminare il file originale, usa -k (mantieni) per indicare a Pigz di non eliminare il file originale dopo averlo elaborato.

$ pigz -k archlinux.iso

Elenca il contenuto di un file di archivio

Per elencare il contenuto del file archiviato sopra, senza estrarlo, utilizzare -l bandiera.

$ pigz -l archlinux.iso.gz 
compressed   original reduced  name
 654901763  677380096    3.3%  archlinux.iso

Come puoi vedere nell'output sopra, il file di input è stato ridotto del 3,3% rispetto alla sua dimensione originale.

Specifica i metodi di compressione

Pigz supporta i seguenti metodi di compressione:

  • Compressione più lenta e migliore (-9)
  • Compressione più veloce e ridotta (-1)
  • Nessuna compressione (-0)
  • Compressione predefinita (-6)

Ad esempio, per comprimere un file utilizzando il miglior metodo di compressione (lento), eseguire:

$ pigz -9 archlinux.iso

Comprimi un file con meno compressione (veloce):

$ pigz -1 archlinux.iso

Nessuna compressione:

$ pigz -0 archlinux.iso

Cambia il formato di compressione

Per impostazione predefinita, salva il file di output in gzip formato. Puoi, tuttavia, cambiarlo in un formato diverso.

Il comando seguente comprime il file specificato in zlib (.zz) invece del formato gzip:

$ pigz -k -z archlinux.iso

Qui abbiamo usato -k (minuscolo) per conservare il file originale dopo averlo compresso.

Allo stesso modo, per comprimere il file in zip formato, usa -K flag (maiuscolo):

$ pigz -k -K archlinux.iso

Comprimi directory

Pigz non ha alcuna opzione per comprimere direttamente le cartelle. Tuttavia, possiamo ottenere questo risultato combinando tar comando con pigz come di seguito.

$ tar cf - Pictures/ | pigz > pictures.tar.gz

Il comando precedente comprimerà la cartella Immagini e la salverà come file pictures.tar.gz.

Come uno dei nostri lettori Wazz detto nella sezione commenti qui sotto, possiamo anche usare il parametro "use-compress-program" all'interno di tar per eseguire pigz invece di svuotarlo.

Esempio:

$ tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2

Limita il numero di processori durante la compressione

Come ho già detto, Pigz sfrutta fino in fondo più processori e core durante la compressione dei file. Puoi modificare questo comportamento utilizzando -p bandiera.

Ad esempio, il comando seguente comprimerà un file utilizzando il miglior metodo di compressione e 4 processori e manterrà il file originale:

$ pigz -9 -k -p4 archlinux.iso

Per trovare il numero di core del processore in Linux, fare riferimento alla seguente guida:

  • Come trovare il numero di core della CPU dalla riga di comando in Linux

Decomprimi i file

Possiamo decomprimere i file compressi nella loro forma originale usando pigz -d o unpigz comandi.

$ pigz -d archlinux.iso.gz

Oppure,

$ unpigz archlinux.iso.gz

Per maggiori dettagli, fare riferimento alla sezione della guida e alle pagine man:

$ pigz --help
$  man pigz

Gzip vs Pigz - Confronto delle prestazioni

Ho testato archlinux.iso (dimensione 677,4 MB ) con le utilità Pigz e Gzip. Ecco i risultati:

Compressione tramite Gzip:

$ time gzip archlinux.iso

real	0m35.086s
user	0m32.719s
sys	0m1.333s

Compressione con Pigz:

$ time pigz archlinux.iso

real 0m12.545s
user 0m46.376s
sys 0m1.520s

Decompressione con Gzip:

$ time gzip -d archlinux.iso.gz 

real	0m6.847s
user	0m5.621s
sys	0m0.783s

Decompressione con Pigz:

$ time unpigz archlinux.iso.gz 

real	0m2.398s
user	0m2.370s
sys	0m1.931s

Come puoi vedere negli output sopra, Pigz può comprimere e decomprimere un singolo file di 677,4 MB due volte più veloce che con gzip.

Quindi, se disponi di un moderno sistema multiprocessore e multicore e desideri comprimere file più grandi il più velocemente possibile, utilizzando tutti i core della CPU disponibili, pigz sarà una buona scelta! Fai un tentativo e facci sapere cosa ne pensi dell'utilità di compressione Pigz nella sezione commenti qui sotto.

Lettura correlata:

  • Come comprimere e decomprimere file in Linux
  • Come archiviare file e directory in Linux

Linux
  1. 16 Comandi Tar per comprimere ed estrarre file in Linux

  2. Comando Tar in Linux (comprimi e decomprimi file)

  3. Come archiviare e comprimere file su Linux

  4. Come comprimere/decomprimere in Linux

  5. Come comprimere e decomprimere file .bz2 in Linux usando il comando bzip2

Come rinominare file e directory in Linux

Come comprimere file e directory in Linux

Come installare Pigz per comprimere i file più velocemente in Linux

Trova facilmente file e directory su Linux

Comando tar di Linux per comprimere ed estrarre file

Come installare e utilizzare Pigz per comprimere i file più velocemente in Linux