Ubunlog Damian Amoedo  

Pigz, comprime tus archivos en muy poco tiempo desde la terminal

about pigz

En el siguiente artículo vamos a echar un vistazo a pigz. Esta es una implementación multiproceso de gzip que nos va a permitir comprimir archivos en muy poco tiempo. Esta herramienta viene a ofrecernos una opción más para la compresión, ya que incluso una de las soluciones de archivado / compresión más rápidas disponibles como es gzip, tiene un pequeño problema, y es que no admite múltiples procesadores / núcleos. Esto quiere decir que si disponemos de un PC relativamente nuevo, no aprovechará todas sus capacidades.

Pigz, que significa implementación paralela de gzip, es un reemplazo completamente funcional para gzip, que explota múltiples procesadores y múltiples núcleos al comprimir los datos. Pigz fue escrito por Mark Adler y utiliza las bibliotecas zlib y pthread.

Pigz comprime utilizando subprocesos para utilizar múltiples procesadores y núcleos. Cada uno se divide en trozos de 128 KB. Cada uno de ellos y el valor de control individual para cada trozo se calculan en paralelo. Los datos comprimidos se escriben en orden para la salida, y el valor de verificación combinado se calcula a partir de los valores de verificación individuales.

Instalación de pigz en Ubuntu

Para instalar pigz en Ubuntu, Mint y otras distribuciones compatibles con Debian, no tendremos más que abrir una terminal (Ctrl+Alt+T) y utilizar el comando:

instalar pigz

sudo apt install pigz

Uso básico de pigz

Comprimir un solo archivo

Para comprimir cualquier archivo al formato GNU Zip con pigz, no tendremos más que utilizarlo de la siguiente forma:

comprimir archivo simple

pigz NOMBRE_DEL_ARCHIVO

Para algunos, puede ser un problema que de forma predeterminada pigz elimine el archivo original después de la compresión. Si quieres conservarlo, debes utilizar el modificador -k como se indica a continuación:

comprimir conservando archivo original con pigz

pigz -k NOMBRE_DEL_ARCHIVO

Pigz admite múltiples niveles de compresión, y nos va a permitir elegir entre ellos indicando su número después de un guion. Un ejemplo de esto sería:

nivel de compresión de pigz

pigz -9 -k NOMBRE_DEL_ARCHIVO

Podremos utilizar números del 1 al 9. Con ‘1’ conseguiremos un rendimiento más rápido, pero con la compresión más baja y con ‘9’ obtendremos la compresión más lenta, pero más alta.

Comprimir carpetas

Pigz tiene una restricción significativa, y es que no admite carpetas. Solo vamos a poder comprimir archivos de forma individual. Aun que podemos encontrar una solución alternativa, que es usarlo junto con tar.

Si quisiéramos comprimir la carpeta ‘Fondos‘, y como tar admite el uso de programas de compresión externos, podríamos hacer algo como lo siguiente:

compresión carpetas

tar --use-compress-program="pigz -k -9" -cf Fondos.tar.gz Fondos/

En el comando anterior, tar –use-compress-program establece que aunque creará un archivo con tar, la compresión de su contenido se realizará a través de un programa externo, en este caso pigz. Este programa externo y sus parámetros se definen con la parte pigz -k -9 del comando. Finalmente, indicaremos que queremos crear un archivo utilizando ‘-cf‘, llamado ‘Fondos.tar.gz‘ con todo lo que se encuentra en la carpeta ‘Fondos/‘.

Descomprimir archivos y carpetas

Descomprimir cualquier archivo .gz con pigz es tan simple como escribir cualquiera de los siguientes comandos:

pigz -d NOMBRE_DEL_ARCHIVO.gz

unpigz NOMBRE_DEL_ARCHIVO.gz

En el archivo creado anteriormente con una carpeta con la extensión tar.gz, la descompresión de carpetas utiliza el mismo enfoque ‘tar‘ que usamos para la compresión:

descomprimir carpeta

tar --use-compress-program="pigz -d" -xvf NOMBRE_CARPETA.tar.gz

Paralelización limitante

Pigz, por defecto utiliza todos los procesadores / núcleos en el equipo. Al comprimir grandes conjuntos de datos, esto puede afectar a la capacidad de respuesta del equipo.

Con la opción p, podremos limitar el uso a un número específico de procesadores / núcleos. Esto dejará el resto libres para sus otras tareas e interactividad. Para hacerlo, no habrá más que añadir la cantidad de procesadores / núcleos de la siguiente forma:

paralelización limitante

pigz -k -p2 NOMBRE_DEL_ARCHIVO

-p2 restringe a pigz para usar solo dos procesadores / núcleos. Podremos utilizar cualquier número que queramos, y aun que resulte evidente, es importante mantener ese número dentro de los límites de nuestro hardware.

Para obtener más información los usuarios podemos echar un vistazo al archivo README o leer la página del manual para los usuarios de pigz.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.