Pigz , abreviatura de p arallel yo implementación de gz ip, es una utilidad de compresión multiproceso gratuita y de código abierto para comprimir y descomprimir archivos en Linux. Pigz, pronunciado como pig-zee , usa el zlib y pthread bibliotecas y aprovecha al máximo los múltiples procesadores y múltiples núcleos al comprimir datos. Dado que pigz comprime utilizando subprocesos para utilizar múltiples procesadores y núcleos, puede archivar archivos más grandes mucho más rápido que con gzip. En pocas palabras, pigz hace lo que hace gzip, pero asigna el trabajo a múltiples procesadores y núcleos al comprimir y acelera significativamente el proceso de compresión/descompresión. En esta guía, aprendamos a comprimir y descomprimir archivos en paralelo usando Pigz en Linux.
Instalar Pigz en Linux
Pigz está disponible en los repositorios oficiales de los sistemas operativos Linux más populares.
En Arch Linux y sus variantes como Manjaro Linux, habilite [Comunidad] repositorio e instale Pigz usando el comando:
$ sudo pacman -S pigz
En CentOS 8/7/6 :
$ sudo yum install pigz
En Debian :
$ sudo apt-get install pigz
En Fedora :
$ sudo dnf install pigz
En Ubuntu , Linux Mint :
$ sudo add-apt-repository universe
$ sudo apt install pigz
En openSUSE :
$ sudo zypper install pigz
En otras distribuciones de Linux, compile e instale desde la fuente como se muestra a continuación.
Primero, asegúrese de haber instalado los siguientes requisitos previos:
- hacer
- gcc
- zlib-devel
Por ejemplo, en sistemas basados en Debian puede instalar los paquetes anteriores usando el comando:
$ sudo apt install make gcc zlib-devel
En sistemas basados en RPM:
$ sudo yum install make gcc zlib-devel
Luego descargue la última versión de Pigz del sitio web oficial (el enlace se encuentra al final):
$ wget https://zlib.net/pigz/pigz-2.4.tar.gz
Extraiga el archivo tar de pigz:
$ tar -xzvf pigz-2.4.tar.gz
Este comando extraerá el contenido en una carpeta llamada pigz-2.4 en el directorio de trabajo actual.
CD en el directorio "pigz-2.4":
$ cd pigz-2.4
Compílelo e instálelo usando el siguiente comando:
$ make
Copie el binario pigz a su $PATH, por ejemplo /usr/local/bin :
$ sudo cp pigz /usr/local/bin/
Cierra sesión y vuelve a iniciarla para comenzar a usar pigz.
Comprime y descomprime archivos en paralelo usando Pigz
Pigz divide la entrada dada en 128 KB fragmenta y comprime cada uno de ellos en paralelo. El formato de datos comprimidos generado está en formato gzip, zlib o zip de una sola entrada mediante el método de compresión deflate. Por defecto comprime el archivo gzip (.gz) formato.
Déjame mostrarte algunos ejemplos prácticos. Para el propósito de esta guía, usaré archlinux.iso archivo (tamaño 677,4 MB ) para probar.
Comprimir archivos
Para comprimir un archivo con las opciones predeterminadas, simplemente ejecute:
pigz <path-to-file>
Ejemplo:
$ pigz archlinux.iso
El comando anterior comprimirá el archivo dado, es decir, archlinux.iso y guárdelo como archlinux.iso.gz en el directorio de trabajo actual.
Tenga en cuenta que el comando anterior eliminará el archivo original, es decir, archlinux.iso después de comprimirlo. Si no desea eliminar el archivo original, use -k (mantener) para indicar a Pigz que no elimine el archivo original después de procesarlo.
$ pigz -k archlinux.iso
Lista del contenido de un archivo de almacenamiento
Para enumerar el contenido del archivo archivado anterior, sin extraerlo, use -l bandera.
$ pigz -l archlinux.iso.gz compressed original reduced name 654901763 677380096 3.3% archlinux.iso
Como puede ver en el resultado anterior, el archivo de entrada se ha reducido en un 3,3 % con respecto a su tamaño original.
Especificar métodos de compresión
Pigz admite los siguientes métodos de compresión:
- La mejor y más lenta compresión (-9)
- Más rápido y con menos compresión (-1)
- Sin compresión (-0)
- Compresión predeterminada (-6)
Por ejemplo, para comprimir un archivo utilizando el mejor método de compresión (lento), ejecute:
$ pigz -9 archlinux.iso
Comprimir un archivo con menos compresión (rápido):
$ pigz -1 archlinux.iso
Sin compresión:
$ pigz -0 archlinux.iso
Cambiar formato de compresión
Por defecto, guarda el archivo de salida en gzip formato. Sin embargo, puede cambiarlo a un formato diferente.
El siguiente comando comprime el archivo dado a zlib (.zz) en lugar de formato gzip:
$ pigz -k -z archlinux.iso
Aquí, usamos el -k (minúsculas) para mantener el archivo original después de comprimirlo.
Del mismo modo, para comprimir el archivo en zip formato, use -K (mayúsculas) bandera:
$ pigz -k -K archlinux.iso
Comprimir Directorios
Pigz no tiene ninguna opción para comprimir carpetas directamente. Sin embargo, podemos lograr esto combinando tar comando con pigz como a continuación.
$ tar cf - Pictures/ | pigz > pictures.tar.gz
El comando anterior comprimirá la carpeta Imágenes y la guardará como archivo pictures.tar.gz.
Como uno de nuestros lectores Wazz dicho en la sección de comentarios a continuación, también podemos usar el parámetro 'use-compress-program' dentro de tar para ejecutar pigz en lugar de canalizarlo.
Ejemplo:
$ tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2
Limite el número de procesadores al comprimir
Como ya dije, Pigz explota múltiples procesadores y núcleos al máximo al comprimir archivos. Puede cambiar este comportamiento usando -p bandera.
Por ejemplo, el siguiente comando comprimirá un archivo usando el mejor método de compresión y 4 procesadores y mantendrá el archivo original:
$ pigz -9 -k -p4 archlinux.iso
Para encontrar la cantidad de núcleos de procesador en Linux, consulte la siguiente guía:
- Cómo encontrar el número de núcleos de CPU desde la línea de comandos en Linux
Descomprimir archivos
Podemos descomprimir los archivos comprimidos a su forma original usando pigz -d o unpigz comandos.
$ pigz -d archlinux.iso.gz
O,
$ unpigz archlinux.iso.gz
Para obtener más detalles, consulte la sección de ayuda y las páginas man:
$ pigz --help
$ man pigz
Gzip vs Pigz - Comparación de rendimiento
Probé archlinux.iso (tamaño 677,4 MB ) archivo con las utilidades Pigz y Gzip. Estos son los resultados:
Compresión usando Gzip:
$ time gzip archlinux.iso real 0m35.086s user 0m32.719s sys 0m1.333s
Compresión usando Pigz:
$ time pigz archlinux.iso real 0m12.545s user 0m46.376s sys 0m1.520s
Descompresión con Gzip:
$ time gzip -d archlinux.iso.gz real 0m6.847s user 0m5.621s sys 0m0.783s
Descompresión con Pigz:
$ time unpigz archlinux.iso.gz real 0m2.398s user 0m2.370s sys 0m1.931s
Como puede ver en los resultados anteriores, Pigz puede comprimir y descomprimir un solo archivo de 677,4 MB dos veces más rápido que con gzip.
Por lo tanto, si tiene un sistema moderno multiprocesador y multinúcleo y desea comprimir archivos más grandes lo más rápido posible, utilizando todos los núcleos de CPU disponibles, ¡pigz será una buena opción! Pruébelo y háganos saber su opinión sobre la utilidad de compresión Pigz en la sección de comentarios a continuación.
Lectura relacionada:
- Cómo comprimir y descomprimir archivos en Linux
- Cómo archivar archivos y directorios en Linux