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