Si alguna vez ha tenido que comprimir grandes volúmenes con tar
, sabrás cuánto dolor puede ser. A menudo va muy lentamente, y te encuentras presionando Ctrl + C para finalizar la tarea y simplemente olvidarte de ella. Sin embargo, hay algunas otras herramientas que tar puede usar, y son una excelente manera de hacer uso de las CPU de subprocesos múltiples de hoy en día y acelerar su archivado tar. Este artículo le muestra cómo hacer que tar use todos los núcleos al comprimir archivos en Linux.
Las tres herramientas principales en cuestión aquí son pigz, pbzip2 y pxz. Hay algunas diferencias sutiles entre las herramientas, pero las diferencias se encuentran entre gzip, bzip2 y xz. En ese orden respectivo, los niveles de compresión aumentan, lo que significa que un archivo comprimido con gzip será más grande que uno comprimido con xz, pero gzip naturalmente llevará menos tiempo que xz. bzip2 está en algún lugar en el medio.
La “p” que inicia los nombres de cada una de las herramientas significa “paralela”. La paralelización es algo que se ha vuelto cada vez más relevante a lo largo de los años: qué tan bien algo abarca todos los núcleos de la CPU. Con CPU como las líneas Epyc y Threadripper de AMD que pueden alcanzar los 64 núcleos y 128 subprocesos, es importante entender qué aplicaciones pueden hacer uso de eso. Estas funciones de compresión son los principales candidatos.
Para instalar las herramientas, puede dirigirse a sus repositorios.
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
Este artículo se centra en pxz en aras de la coherencia. Puedes consultar este tutorial para pigz.
Comprimir archivos con Tar
La sintaxis de tar es bastante simple. Para simplemente comprimir un directorio, puede usar un comando como este:
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
El primero usará gzip, el segundo usará bzip2 y el tercero usará xz. El nombre del archivo y el directorio variarán dependiendo de lo que esté haciendo, pero saqué el Kernel de Linux de GitHub a mi directorio «/home», y lo usaré. Entonces, continuaré y comenzaré ese comando con el time
Comando en la parte delantera para ver cuánto tiempo tarda. También puede ver que xz figura como el que ocupa el porcentaje más alto de mi CPU en este sistema, pero solo fija un núcleo al 100 por ciento.
Y, como puede ver, mi antiguo i7-2600 tardó mucho tiempo en comprimir Linux 5.10-rc3 (alrededor de 28 minutos).
Aquí es donde estas herramientas de compresión paralela resultan útiles. Si está comprimiendo un archivo grande y busca hacerlo más rápido, no puedo recomendar estas herramientas lo suficiente.
Puede decirle a tar que use un programa de compresión con el --use-compression-program
opción, o puede usar un indicador de comando un poco más simple de -I
. Un ejemplo de la sintaxis para cualquiera de estas herramientas sería así:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
Probémoslo y veamos cuánto tarda mi sistema en comprimir el kernel de Linux con acceso a los ocho subprocesos de mi CPU. Tú puedes ver mi htop
lectura que muestra todos los subprocesos anclados al 100 por ciento de uso debido a pxz.
Puede ver que tomó mucho menos tiempo comprimir ese archivo (¡alrededor de siete minutos!), y eso fue con multitarea. Tengo una máquina virtual ejecutándose en segundo plano y estoy navegando por la web en este momento. El programador de hardware Linux Kernel le dará lo que necesita para sus cosas personales, por lo que si dejó su pxz
comando para ejecutarse sin ninguna otra cosa ejecutándose en su sistema, es posible que pueda hacerlo más rápido.
Ajuste de los niveles de compresión con pigz, pbzip2 y pxz
También puede pasar niveles de compresión a pxz para hacer que el archivo sea aún más pequeño. Esto requerirá más RAM, CPU y tiempo, pero vale la pena si realmente necesita obtener un archivo pequeño. Aquí hay una comparación de los dos comandos y sus resultados uno al lado del otro.
La compresión no es mucho mayor y el tiempo no necesariamente vale la pena, pero si cada megabyte cuenta, sigue siendo una excelente opción.
Espero que haya disfrutado de esta guía para usar todos los núcleos para comprimir archivos usando tar. Asegúrese de revisar algunos de nuestros otros contenidos de Linux, como cómo construir una nueva PC para Linux, dominar Apt y convertirse en un gurú de Apt, y cómo instalar Arch Linux en una Raspberry Pi.