En Linux / Unix, ¿importa .tar.gz versus .zip?

69

Los programas multiplataforma a veces se distribuyen como .tar.gz para la versión Unix y .zip para la versión de Windows. Esto tiene sentido cuando el contenido de cada uno debe ser diferente.

Sin embargo, si el contenido va a ser el mismo, sería más simple tener solo una descarga. Windows prefiere .zip porque ese es el formato que puede manejar de fábrica. ¿Importa en Unix? Es decir, probé hoy descomprimir un archivo en Ubuntu Linux, y funcionó bien; ¿Hay algún problema con esto en cualquier sistema operativo actual similar a Unix, o está bien simplemente proporcionar un archivo .zip en todos los ámbitos?

rwallace
fuente

Respuestas:

28

Nigromancia
Si importa.
En realidad, depende.

tar.gz

  • Almacena los atributos del archivo unix : uid, gid, permisos (más notablemente ejecutables). El valor predeterminado puede depender de su distribución y puede alternarse con opciones.
  • Consolida todos los archivos a archivar en un archivo ("Tape ARchive").
  • La compresión real se realiza mediante GZIP, en el archivo .tar

Código Postal

  • Almacena los atributos de MSDOS . (Archivo, Solo lectura, Oculto, Sistema)
  • Comprime cada archivo individualmente, luego consolida los archivos comprimidos individualmente en un archivo
  • Incluye una tabla de archivos al final del archivo

Debido a que zip comprime los archivos individualmente, un archivo zip probablemente tendrá un tamaño más grande (especialmente con muchos archivos más pequeños, piense en los archivos de configuración).

Entonces, además del tamaño del archivo, si comprime un montón de archivos en Linux / Unix y luego los descomprime, los atributos del archivo desaparecerán (al menos los que no son compatibles con MS-DOS, depende de qué ZIP -software que utilizas). Esto puede importar, o puede que no, en cuyo caso no importa (porque la diferencia de tamaño de archivo es insignificante en la mayoría de los casos).

Dilema
fuente
10
La distribución estándar de zip en sistemas tipo unix (info-zip) también almacena atributos de archivos unix.
Erik Aronesty
35

tar gz es mejor para Linux / Unix, ya que retiene los permisos, como "ejecutable" en los scripts.

Zam
fuente
8
Archive Utility de OS X y zip / unzip conservan los permisos, pero puede haber otras utilidades que no lo hacen.
Lri
44
Las herramientas zip / descomprimir estándar (info-zip) retienen los permisos en Linux y las marcas de tiempo en Windows. consulte: en.wikipedia.org/wiki/Info-ZIP para conocer las capacidades típicas ... que supera los problemas de permisos y las limitaciones de tamaño de archivo al tiempo que conserva el acceso aleatorio deseable y las propiedades de archivo editables.
Erik Aronesty
33

Las distribuciones de Linux más populares en estos días están equipadas por defecto con zipcompatibilidad. Pero como lo indica nc3b, tary gzipson más comunes en sistemas Linux / Unix. Si necesita un 95% de compatibilidad en estos sistemas, considere usar tary gzip. Si solo necesita el 85%, ziplo hará bien.

BloodPhilia
fuente
2
De acuerdo, 95% es mejor que 85% :-) Una pregunta muy pequeña, ¿importa si la extensión del archivo es .tgz en lugar de .tar.gz?
rwallace
8
La extensión no importa en absoluto, solo se usa como referencia por usuarios y programas. Si la extensión es .XXX y sabe que es .tar, aún podría usar tar para descomprimirla. .tgz y .tar.gz son, de hecho, las mismas extensiones y los archivos con estas extensiones serían similares.
BloodPhilia
2
Por otro lado, para una compatibilidad del 100% en Windows, necesitaría usar la cabina.
kinokijuf
3
tar almacenará uid, gid y permisos, como + x en sistemas unix. zip almacena archivo, solo lectura, oculto y sistema en sistemas Windows.
Andrew De Andrade
1
@mtak siempre puedes usar gunzip --suffix .zip npm-debug.log.zipogunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp
19

tar / gzip es un formato bastante malo ya que no se puede acceder al archivo al azar, actualizarlo, verificarlo o incluso agregarlo ... sin tener que descomprimir todo el archivo.

zip es mucho mejor en ese sentido ... puede obtener rápidamente el contenido de un archivo zip, adjuntarlo sin volver a comprimir la primera parte, etc.

zip tiene algunas limitaciones de tamaño ... dependiendo de la versión de "zip" que use ... y esto puede ser un problema. pero la herramienta estándar de información-zip que viene con la mayoría de los sistemas operativos tipo Linux no tiene limitaciones de tamaño y conserva los permisos de los archivos perfectamente.

ver: https://en.wikipedia.org/wiki/Info-ZIP para capacidades

Erik Aronesty
fuente
¿De qué tipo de limitaciones estás hablando?
Pacerier
editado y proporcionado un enlace
Erik Aronesty
9

Las instalaciones de Barebones Unix no contienen descomprimir (es decir, instalaciones de servidor), pero siempre contienen tar y gzip . Si tu audiencia son servidores, iría por gzip .

Además, gzip tiene una mayor compresión que zip , por lo que el archivo será más pequeño.

Rwky
fuente
1
No diría que gzip comprime mejor que ZIP. Ambos usan el mismo algoritmo DEFLATE, y todas las comparaciones que he hecho dan resultados similares en tamaño de archivo.
Grawity
44
Bueno, tar.gz comprimirá todo el archivo de una vez, mientras que zip comprime los archivos individualmente. Para muchos archivos pequeños, el primer enfoque generalmente generará archivos notablemente más pequeños, ya que se pueden usar redundancias en todos los archivos. Sin embargo, la diferencia no es enorme.
sleske
3

Si importa. Tar es un archivero. Y en tar.gz, comprimimos ese archivo.

Zip es tanto un archivador como un compresor.

Si compara la compresión, desde mi experiencia, gzip es mucho mejor que zip.

Y la otra diferencia significativa se menciona en otra respuesta . Si tiene un archivo de archivos muy grande y desea extraer un archivo pequeño, Zip le permite hacerlo. Pero con tar.gz, necesita extraer todo el archivo.

Rakesh Reddy
fuente
No es un archivo de archivos comprimidos, sino un archivo comprimido de archivos. Es por eso que debes extraer todo el archivo.
m93a
2

La decisión básicamente se reduce a esto:

  • GZIP mantiene los permisos de archivos Unix , ya que los archivos pueden ejecutarse.

  • Por otro lado, ZIP funciona de fábrica en Windows.

Alberto Salvia Novella
fuente
1

tary gzipson mucho más comunes en * nix-es que unzip. Por ejemplo, en este momento en mi arch-2009.08 no hay unzip.

nc3b
fuente
66
Pero hay bsdtar(parte de libarchive), que maneja bien ZIP.
Grawity
Oops: "> No sabía sobre eso. ¡Gracias! :-)
nc3b