Esta pregunta ya tiene una respuesta aquí:
La forma en que entiendo el uso de tar + gzip es que tar
normalmente se usa para consolidar una agrupación de archivos en un solo archivo, luego gzip
se usa para comprimir ese archivo.
Hace poco aprendí que tar
también se puede comprimir.
Debido a que no entiendo completamente cómo funciona la compresión en su núcleo, tengo preocupaciones (posiblemente ridículas) de que enviar un .tar precomprimido a gzip podría evitar que gzip se comprima, así como su potencial lo permitiría y cosas de esa naturaleza.
Mi pregunta es esencialmente: ¿Qué combinación de args / métodos de compresión debo usar para crear el tar.gz más pequeño y absoluto, y cómo se ve la declaración de línea de comando para eso?
command-line
compression
gzip
tar
Mario Zigliotto
fuente
fuente
Respuestas:
O puede indicarle a tar la compresión máxima del usuario de esta manera:
Además, para mantener tus envvars libres de desorden, puedes hacer esto:
fuente
Como usted dijo, "el alquitrán también puede comprimir ", implica que
tar
no siempre comprime los datos por sí mismo.Solo lo hace cuando se usa con la
z
opción. Eso tampoco por sí mismo, sino que pasa los datos tarred a través de gzip.Sin embargo, como se indica en esta respuesta, puede canalizar los dos comandos:
tar
&gzip
tal que pueda especificar explícitamente el nivel de compresión para que elgzip
comando alcance el tamaño de salida más pequeño.Aquí
9
especifica el nivel de compresión máximo posible.fuente
tar -cvf /path
Por lo general, ni gzip ni tar pueden crear "el tar.gz más pequeño absoluto". Hay muchas utilidades de compresión que pueden comprimir al formato gz. He escrito un script bash " gz99 " para tratar
gzip
,7z
yadvdef
para obtener el archivo más pequeño. Para usar esto para crear la ejecución de archivo más pequeña posible:La
advdef
utilidad de AdvanceCOMP generalmente proporciona el archivo más pequeño, pero también tiene errores (lagz99
utilidad verifica que no haya dañado el archivo antes de aceptar la salida deadvdef
). Para usaradvdef
directamente, crea file.tar.gz como quieras. Entonces corre:Esto creará un archivo gz estándar que puede ser leído por gzip y tar de forma normal, solo un poco más pequeño. Esto es lo mejor que puedes hacer con el formato gz.
Como recientemente aprendió que el tar puede comprimirse y no dijo por qué quería el archivo ".tar.gz" más pequeño, es posible que no sepa que se pueden usar formatos más eficientes con los archivos tar, como xz. En general, cambiar a un formato diferente puede proporcionar una mejora mucho mejor en la compresión que jugar con las opciones de gzip. La principal desventaja de xz es que no es tan común como gzip, por lo que las personas a las que envía el archivo podrían tener que instalar un nuevo paquete. También tiende a ser un poco más lento, especialmente cuando se comprime. Si esto no te importa y realmente quieres el archivo tar más pequeño, prueba:
Las versiones modernas de tar, por ejemplo en Ubuntu 13.10, detectan automáticamente los archivos comprimidos. Entonces, incluso si usa la compresión xz, aún puede descomprimir como de costumbre:
Para dar una idea rápida de cómo se comparan estas utilidades de compresión, considere el efecto de comprimir el parche 3.1.1 del núcleo de Linux:
En este ejemplo trivial, vemos que para obtener el gz más pequeño necesitamos advdef (aunque 7z -tgzip es casi tan bueno y mucho menos defectuoso). También vemos que cambiar a xz nos da mucho más espacio que tratar de aprovechar al máximo el antiguo formato gz, sin que la compresión tarde demasiado.
fuente
xz -9
generalmente toma algo como 5 veces elgz -9
tiempo, no solo 1.5 veces Su mesa sugiere.gzip
La opción--best
(equivalente a-9
) solicita el nivel de compresión más alto.fuente
--best
flag: -9 es confuso para el lector.