2011-07-01 18:00:22 +0000 2011-07-01 18:00:22 +0000
149
149
Advertisement

¿Cómo se especifica el nivel de compresión al utilizar tar -zcvf?

Advertisement

Yo gzip directorios muy a menudo en el trabajo. Lo que hago normalmente es

tar -zcvf file.tar.gz /path/to/directory

¿Hay alguna manera de especificar el nivel de compresión aquí? Quiero usar la mejor compresión posible aunque me lleve más tiempo comprimir.

Advertisement
Advertisement

Respuestas (5)

69
69
69
2011-07-01 18:25:45 +0000

En lugar de utilizar la bandera gzip para tar, gzip los archivos manualmente después del proceso tar, entonces usted puede especificar el nivel de compresión para el programa gzip:

tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar

O puede usar

tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz

El -9 en la línea de comandos de gzip le dice a gzip que utilice el máximo nivel de compresión posible (por defecto es -6).

Edición: Corregida la línea de comando de gzip basada en el comentario de @depesz.

55
55
55
2012-12-19 03:03:43 +0000

Las versiones modernas de tar soportan el formato de archivo xz (GNU tar, desde 1.22 en 2009, Busybox desde 1.17.0 en 2010).

Está basado en lzma2 , algo así como una versión 7-Zip de gz . Esto da una mejor compresión si usted está bien con el requisito de necesitar soporte xz.

tar -Jcvf file.tar.xz /path/to/directory

Acabo de descubrir aquí (básicamente un duplicado de esta pregunta, pero en el stackexchange de Unix) que también hay una variable de entorno XZ_OPT=-9 para controlar el nivel de compresión XZ similar a la de GZIP en el otro post.

XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
34
Advertisement
34
34
2013-02-04 18:17:32 +0000
Advertisement
tar cv /path/to/directory | gzip --best > file.tar.gz

Esta es la segunda solución de Matrix Mole, pero ligeramente acortada:

Al llamar a tar, la opción f indica que la salida es un archivo. Ponerla a - (stdout) hace que tar escriba su salida en stdout, que es el comportamiento por defecto sin f y -.

Y como se indica en la página man de gzip, si no se especifican archivos gzip comprimirá desde la entrada estándar. No hay necesidad de - en la llamada a gzip.

La opción --best (equivalente a -9) establece el nivel de compresión más alto.

10
10
10
2016-06-21 04:21:54 +0000

También existe la opción de especificar el programa de compresión mediante -I. Esto puede incluir la opción de nivel de compresión.

tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
3
Advertisement
3
3
2019-01-19 16:26:40 +0000
Advertisement

Y, por supuesto, el tar derivado de macOS bsd tiene que ser diferente:

tar -czf file.tar.gz --options gzip:compression-level=9 /path/to/directory
Advertisement

Preguntas relacionadas

6
10
5
37
4
Advertisement
Advertisement