GNU/Linux >> Tutoriales Linux >  >> Linux

Pigz – Comprime y descomprime archivos en paralelo en Linux

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

Linux
  1. 16 comandos Tar para comprimir y extraer archivos en Linux

  2. Cómo comprimir y descomprimir archivos en Linux

  3. Comando Tar en Linux (comprimir y descomprimir archivos)

  4. ¿Cómo comprimir y extraer archivos usando el comando tar en Linux?

  5. Todos los comandos de compresión/descompresión de Linux

Cómo cambiar el nombre de archivos y directorios en Linux

Cómo comprimir archivos y directorios en Linux

Cómo instalar Pigz para comprimir archivos más rápido en Linux

Encuentre archivos y directorios en Linux fácilmente

Comando tar de Linux para comprimir y extraer archivos

Cómo instalar y usar Pigz para comprimir archivos más rápido en Linux