Pigz, comprime tus archivos en muy poco tiempo desde la terminal
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:
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:
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:
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:
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:
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:
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:
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.