Enfoque común
Hay una opción para el tar
programa:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Puede usar la versión multiproceso del archivador o la utilidad del compresor.
Los archivadores multiproceso más populares son pigz (en lugar de gzip) y pbzip2 (en lugar de bzip2). Por ejemplo:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
El archivador debe aceptar -d. Si su utilidad de reemplazo no tiene este parámetro y / o necesita especificar parámetros adicionales, entonces use tuberías (agregue parámetros si es necesario):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
La entrada y salida de subprocesos simples y múltiples son compatibles. Puede comprimir usando la versión multiproceso y descomprimir usando la versión de un solo hilo y viceversa.
p7zip
Para p7zip para la compresión, necesita un pequeño script de shell como el siguiente:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Guárdelo como 7zhelper.sh. Aquí el ejemplo de uso:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
Respecto al soporte XZ multiproceso. Si está ejecutando la versión 5.2.0 o superior de XZ Utils, puede utilizar múltiples núcleos para la compresión configurando -T
o --threads
en un valor apropiado a través de la variable de entorno XZ_DEFAULTS (por ejemplo XZ_DEFAULTS="-T 0"
).
Este es un fragmento de man para la versión 5.1.0alpha:
La compresión y descompresión multiproceso aún no se han implementado, por lo que esta opción no tiene ningún efecto por el momento.
Sin embargo, esto no funcionará para la descompresión de archivos que tampoco se han comprimido con el subproceso habilitado. Desde man para la versión 5.2.2:
La descompresión roscada aún no se ha implementado. Solo funcionará en archivos que contienen múltiples bloques con información de tamaño en los encabezados de bloque. Todos los archivos comprimidos en modo de subprocesos múltiples cumplen esta condición, pero los archivos comprimidos en modo de subprocesos simples ni siquiera si se usa --block-size = size.
Recompilación con reemplazo
Si crea tar desde las fuentes, puede volver a compilar con parámetros
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Después de volver a compilar tar con estas opciones, puede consultar el resultado de la ayuda de tar:
$ tar --help | grep "lbzip2\|plzip\|pigz"
-j, --bzip2 filter the archive through lbzip2
--lzip filter the archive through plzip
-z, --gzip, --gunzip, --ungzip filter the archive through pigz