¿Por qué no puede extraer tar archivos .zip? [cerrado]

28

Probé con la mayoría de los formatos (gzip, etc.) para extraer un archivo zip tar, y cuando me sentí lo suficientemente frustrado con Google para encontrarlo, no encontré ninguna forma de extraer un archivo zip tary solo recomendaciones para usar zipo unzip. De hecho, mi sistema Linux ni siquiera tiene una ziputilidad, sino solo unzip(dejándome preguntando por qué esta es la principal opción recomendada). Por supuesto unzipfuncionó, resolviendo mi problema, pero ¿por qué no puedo tarextraer archivos zip? Quizás debería preguntar, ¿cuál es la diferencia entre zip y los métodos de compresión compatibles tar?

Plutón
fuente
1
Solo una nota, bsdtarpuede extraer .ziparchivos: P
HalosGhost
12
Te refieres a "¿Por qué no puedo usar un abrelatas para cortar zanahorias?" La cuestión es que tar tiene su propio formato de archivo, y luego lo comprime con el método que elija. Zip es una bestia completamente diferente. Simple como eso. Es "la manera de Unix", tener una herramienta pequeña que haga un buen trabajo, en lugar de tener una cerda lechera que pone huevos y lana que satisfará todas sus necesidades.
tink
Modifiqué ligeramente mi pregunta para aclarar esto, pero creo que mi pregunta claramente implicaba que pensaba que zip era un formato de compresión y no una herramienta de reemplazo para la compresión tar +. La respuesta que elegí corrigió lo que estaba asumiendo y mostró que la respuesta no estaba basada en la opinión.
Plutón
No tiene zippor defecto porque su licencia no es compatible con GPL
venimus

Respuestas:

29

La filosofía de UNIX es tener herramientas pequeñas. Una herramienta está haciendo exactamente una cosa, pero esta especialmente bien.

La tarherramienta solo combina varios archivos en un solo archivo sin ninguna compresión.

La gzipherramienta solo está comprimiendo un solo archivo.

Si desea tener ambos, simplemente combine ambas herramientas para obtener un .tar.gzarchivo.


La zipherramienta es una cosa completamente diferente. Toma un montón de archivos y los combina en un solo archivo comprimido. Con algoritmos totalmente diferentes.


Si quieres una herramienta para gobernarlos, usa todos atool. Admitirá un montón de formatos diferentes simplemente detectando el formato y llamando a la herramienta correcta.

michas
fuente
Gracias por explicar el propósito de ambos en lugar de solo explicar qué hace el alquitrán. Pronto descubrí la respuesta después de mirar un artículo de Wikipedia que enumeraba formatos para "Archivado", "Compresión", y ambos en tres tablas diferentes. Pensé que esperaría una respuesta que explicara esto claramente.
Plutón
Para ser un poco exigente, el gzipalgoritmo de compresión es el mismo utilizado por zip. La diferencia es que gzipestá destinado a comprimir cualquier flujo de bytes, incluido un .tararchivo, mientras que zip, derivado e inspirado por PKZIP, comprime y archiva en un solo paso (y en ese orden).
Joe Sewell
9

En pocas palabras: la herramienta tar GNU no se canaliza a través de zip / unzip ya que a nadie le importa.

Larga historia, tamaño original:

tarinicialmente no estaba destinado a descomprimir y comprimir archivos, sino a archivar varios archivos en un solo archivo grande. Dado que las personas no solo querían archivar sus archivos, sino también comprimirlos, simplemente canalizan la tarsalida a través de cualquier compresor que acepte la entrada de flujo de datos y suelte los resultados en un archivo. ¡Lucro!

Ahora, para hacer que esta tarea sea lo más sencilla posible, tardecidimos canalizar internamente los archivos generados a herramientas de compresión, como gzip, lzma, etc., que se activaron mediante marcas especiales para cada formato al ejecutarse tar. Es por eso que cuando intenta extraer un archivo dañado tar, se muestra el error subyacente de la herramienta, en lugar de tar's:

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

Entonces, no es que tarno descomprima los archivos zip, solo que tarno tiene la capacidad de canalizarlo a través de la herramienta correcta, ya que nadie se molestó en implementarlo, y zip ya cumple la función de archivo del archivo tar formato hay menos razones para que tar lo soporte.

Ahora, hay herramientas todo en uno que comprimen / descomprimen todo lo que les arrojas, una vez más, debes tener las herramientas correctas para admitirlo. Si no los tiene, la herramienta fallará.

Braiam
fuente
1
Bueno, más allá de que nadie implemente la herramienta adecuada para canalizar, no hay una: los archivos tar solo combinan varios archivos en uno. La compresión es separada. Por lo tanto, los filtros de tuberías de alquitrán solo comprimen / descomprimen un solo archivo tar. Zip funciona de manera diferente; utiliza una herramienta integrada para comprimir y combinar (un programa similar de Unix es afio).
derobert
Sugeriría mencionar algunas de las herramientas de compresión todo en uno que existen. Por ejemplo, está el GNOME file-roller...
derobert
@derobert file-roller solo es compatible con zip si tiene unzip / zip / p7zip instalado. De lo contrario, es tan inútil como el alquitrán.
Braiam
tar solo admite sus diversas versiones comprimidas si también tiene instalada la herramienta relevante ... Los administradores de archivos multiformato son útiles porque le brindan una interfaz consistente para manejar diferentes formatos de archivo.
derobert
@derobert exactamente.
Braiam
3

Un tararchivo es un formato de archivo en sí mismo diseñado para archivos de cinta. Este formato se puede comprimir usando (por ejemplo) gzipo bzip2formatos de compresión. Cuando extrae un archivo tar comprimido, efectivamente lo descomprime y luego extrae los archivos originales del tararchivo sin comprimir .

Cuando extrae un ziparchivo, no contiene ningún tararchivo, solo todos sus archivos originales. Por lo tanto, no hay ninguna razón para tarinvolucrarse en el proceso.

También puede comprimir archivos usando gzipo bzip2por sí mismos al igual que puede crear ziparchivos (sin tarparticipación). Cuando descomprimes estos archivos, usas gunzipo bunzip2no tar.

garethTheRed
fuente
1

Como la respuesta "Algunas cosas simplemente son y deberíamos aceptarlas" tampoco me sienta bien, simplemente hice algunas excavaciones (siempre es bueno aprender algo nuevo, ¿no?).

Por lo tanto, parece que el problema es uno de dónde fueron las herramientas y cuál era su objetivo.

En lugar de parafrasear lo que encontré y hacer que las aguas sean innecesariamente turbias (la ofuscación me molesta), eche un vistazo a este artículo: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/

Supongo que tar podría haber incorporado el soporte zip, pero las metodologías son aparentemente fundamentalmente diferentes. O tal vez pensaron por qué alguien usaría esta herramienta de archivo para administrar archivos de otra herramienta de archivo y compresión (o tal vez hubo algún argumento entre los dos codificadores originales y hubo una orden de restricción presentada que no permitía que las cremalleras cruzaran el límite de la aplicación ... Sí, estoy bromeando).

Yuppers
fuente