it-swarm-es.tech

¿Hay un archivador de archivos paralelo (como tar)?

¿Hay algo por ahí para el archivo paralelo de archivos?

Tar es genial, pero no uso archivos de cinta, y es más importante para mí que el archivo se realice rápidamente (con compresión como bzip2) ya que tengo smp.

42
supercheetah

Creo que estás buscando pbzip2:

PBZIP2 es una implementación paralela del compresor de archivos de clasificación de bloques bzip2 que utiliza pthreads y logra una aceleración casi lineal en máquinas SMP.

Eche un vistazo a página de inicio del proyecto o consulte su repositorio de paquetes favorito.

36
echox

7Zip puede ejecutarse en múltiples hilos cuando se le da el -mmt flag, pero solo cuando se comprime en archivos 7z, que ofrecen una gran compresión pero generalmente son más lentos que Zip para crear archivos. Haz algo como esto:

7z a -mmt foo.7z /opt/myhugefile.dat
21
fschmitt

El OP preguntó sobre el archivo paralelo, no la compresión paralela.

Si el material fuente proviene de un sistema de archivos donde diferentes directorios/archivos pueden estar en diferentes discos, o incluso un solo disco rápido que excede la velocidad de entrada de las herramientas de compresión, entonces podría ser beneficioso tener múltiples flujos de entrada entrando en las capas de compresión.

La pregunta significativa es, ¿cómo se ve la salida de un archivo paralelo? Ya no es solo un descriptor de archivo único/stdout, sino un descriptor de archivo por hilo.

Un ejemplo de esto hasta ahora es el modo de volcado paralelo de Postgresql pg_dump, en el que se vuelca en un directorio, con subprocesos trabajando sobre el conjunto de tablas para hacer una copia de seguridad (cola de trabajo con múltiples subprocesos que consumen la cola).

No estoy seguro de ningún archivador paralelo real que sea convencional. Hubo un truco para Solaris Tar para su uso en ZFS: http://www.maier-komor.de/mtwrite.html

Hay algunas herramientas de copia de seguridad dedicadas que ejecutan con éxito múltiples subprocesos, pero muchas más que solo dividen la carga de trabajo por directorio a un alto nivel.

16
robbat2
tar --use-compress-program=pigz  ....

reemplace pigz con su programa de compresión paralela favorito. La razón para usar tar es porque puede almacenar el propietario, el grupo y los permisos. Esos metadatos suelen ser útiles (por ejemplo, restaurar un árbol de directorios en un sistema complejo).

12
uDude

pigz es una implementación paralela de gzip, pero solo puede usar múltiples procesadores para la compresión, no la descompresión.

10
Jay Hacker

tar es simplemente un formato de archivo que es muy bueno para duplicar exactamente los archivos y preservar el árbol de directorios y los atributos del archivo original. TAR es muy bueno para hacer copias de seguridad, porque todo está preservado. Yo suelo pbzip2 para comprimir los archivos tar que uso para las copias de seguridad del sistema con muy buenos resultados.

este comando debería hacer el truco.

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 puede reemplazarse con una utilidad de compresión diferente, pero tenga en cuenta que la compresión LZMA (como pxz) usa una TONELADA de RAM al comprimir/descomprimir archivos grandes (intenté ejecutar 8 hilos con 8GB) de RAM, y pxz comenzó a cambiar al disco).

8
lovot

Otro contendiente es lbzip2 . Es bastante similar a pbzip2

4
Felipe Alvarez

En lo que respecta a la compresión, xz ya que aproximadamente la versión 5.2 admite compresión paralela a través de -T opción.

2
peterph