Unter Linux / Unix spielt .tar.gz im Vergleich zu .zip eine Rolle?

69

Plattformübergreifende Programme werden manchmal als .tar.gz für die Unix-Version und als .zip für die Windows-Version verteilt. Dies ist sinnvoll, wenn die Inhalte unterschiedlich sein müssen.

Wenn der Inhalt jedoch derselbe ist, ist es einfacher, nur einen Download durchzuführen. Windows bevorzugt .zip, da dies das Format ist, das standardmäßig unterstützt wird. Ist es wichtig unter Unix? Das heißt, ich habe heute versucht, eine Datei unter Ubuntu Linux zu entpacken, und es hat gut funktioniert. Gibt es ein Problem mit einem aktuellen Unix-ähnlichen Betriebssystem oder ist es in Ordnung, einfach eine ZIP-Datei auf der ganzen Linie bereitzustellen?

Wallace
quelle

Antworten:

28

Nekromanzierung.
Ja, das ist wichtig.
Eigentlich kommt es darauf an.

tar.gz

  • Speichert Unix-Dateiattribute : UID, GID, Berechtigungen (insbesondere ausführbare Dateien). Die Standardeinstellung kann von Ihrer Distribution abhängen und mit Optionen umgeschaltet werden.
  • Konsolidiert alle zu archivierenden Dateien in einer Datei ("Tape ARchive").
  • Die eigentliche Komprimierung erfolgt durch GZIP in der einen .tar-Datei

Postleitzahl

  • Speichert MSDOS-Attribute . (Archiv, schreibgeschützt, versteckt, System)
  • Komprimiert jede Datei einzeln und fasst dann die einzeln komprimierten Dateien in einer Datei zusammen
  • Enthält eine Dateitabelle am Ende der Datei

Da zip die Dateien einzeln komprimiert, wird ein zip-Archiv höchstwahrscheinlich eine größere Größe haben (insbesondere bei vielen kleineren Dateien - denken Sie an Konfigurationsdateien).

Wenn Sie also eine Reihe von Dateien unter Linux / Unix komprimieren und anschließend dekomprimieren, gehen die Dateiattribute verloren (zumindest diejenigen, die von MS-DOS nicht unterstützt werden - dies hängt von der jeweiligen ZIP-Datei ab) -Software, die Sie verwenden). Dies kann von Bedeutung sein oder auch nicht. In diesem Fall spielt es keine Rolle (da der Unterschied in der Dateigröße in den meisten Fällen vernachlässigbar ist).

Dilemma
quelle
10
Die Standarddistribution von zip auf Unix-ähnlichen Systemen (info-zip) speichert auch Unix-Dateiattribute.
Erik Aronesty
35

tar gz ist besser für Linux / Unix, da es Berechtigungen wie "ausführbar" für Skripte beibehält.

Zam
quelle
8
Das Archivierungsdienstprogramm von OS X und zip / unzip bewahren die Berechtigungen, aber möglicherweise gibt es andere Dienstprogramme, die dies nicht tun.
Lri
4
Standard-Zip / Unzip-Tools (Info-Zip) behalten Berechtigungen unter Linux und Zeitstempel unter Windows bei. Die typischen Funktionen finden Sie unter: en.wikipedia.org/wiki/Info-ZIP. Hiermit werden die Berechtigungsprobleme und Dateigrößenbeschränkungen überwunden, während die gewünschten Eigenschaften für den wahlfreien Zugriff und das bearbeitbare Archiv beibehalten werden.
Erik Aronesty
33

Die beliebtesten Linux-Distributionen sind heutzutage standardmäßig mit zipKompatibilität ausgestattet. Aber wie von nc3b angegeben, tarund gzipsind häufiger auf Linux / Unix-Systemen. Wenn Sie 95% ige Kompatibilität auf diesen Systemen benötigen, ziehen Sie die Verwendung von tarund in Betracht gzip. Wenn Sie nur 85% brauchen, zipwird es gut gehen.

BloodPhilia
quelle
2
Okay, 95% sind besser als 85% :-) Eine sehr kleine Frage, spielt es überhaupt eine Rolle, ob die Dateierweiterung .tgz statt .tar.gz lautet?
rwallace
8
Die Erweiterung spielt keine Rolle, sie wird nur von Benutzern und Programmen als Referenz verwendet. Wenn die Erweiterung .XXX ist und Sie wissen, dass es .tar ist, können Sie sie trotzdem mit tar entpacken. .tgz und .tar.gz sind tatsächlich dieselben Erweiterungen, und Dateien mit diesen Erweiterungen wären ähnlich.
BloodPhilia
2
Für eine 100% ige Kompatibilität unter Windows müsste dagegen cab verwendet werden.
Kinokijuf
3
tar speichert uid, gid und Berechtigungen wie + x auf Unix-Systemen. Zip-Stores archivieren, schreibgeschützt, versteckt und auf Windows-Systemen.
Andrew De Andrade
1
@mtak können Sie immer nur verwenden gunzip --suffix .zip npm-debug.log.zipodergunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp
19

tar / gzip ist ein ziemlich beschissenes Format, da auf das Archiv nicht zufällig zugegriffen, aktualisiert, verifiziert oder sogar angehängt werden kann, ohne das gesamte Archiv dekomprimieren zu müssen.

zip ist in dieser Hinsicht viel besser .... Sie können den Inhalt einer zip-Datei schnell abrufen, an sie anhängen, ohne den ersten Teil erneut zu komprimieren usw.

zip hat einige Größenbeschränkungen ... abhängig von der Version von "zip", die Sie verwenden ... und diese können ein Problem sein. Aber das Standard-Info-Zip-Tool, das mit den meisten Linux-ähnlichen Betriebssystemen geliefert wird, hat keine Größenbeschränkungen und behält Dateiberechtigungen bei.

siehe: https://en.wikipedia.org/wiki/Info-ZIP für Fähigkeiten

Erik Aronesty
quelle
Über welche Einschränkungen sprechen Sie?
Pacerier
bearbeitet und mit einem Link versehen
Erik Aronesty
9

Barebones Unix-Installationen enthalten kein unzip (dh Server-Installationen), aber sie enthalten immer tar und gzip . Wenn Ihre Zielgruppe aus Servern besteht, würde ich mich für gzip entscheiden .

Außerdem hat gzip eine stärkere Komprimierung als zip , sodass die Datei kleiner wird.

Rwky
quelle
1
Ich würde nicht sagen, dass gzip besser komprimiert als ZIP. Beide verwenden denselben DEFLATE-Algorithmus, und alle Vergleiche, die ich durchgeführt habe, führen zu ähnlichen Ergebnissen bei der Dateigröße.
Grawity
4
Nun, tar.gz komprimiert die gesamte Datei auf einmal, während zip die Dateien einzeln komprimiert. Bei vielen kleinen Dateien führt der erste Ansatz normalerweise zu deutlich kleineren Dateien, da Redundanzen zwischen Dateien verwendet werden können. Der Unterschied ist jedoch nicht riesig.
sleske
3

Ja, das ist wichtig. Tar ist ein Archivar. Und in tar.gz komprimieren wir dieses Archiv.

Zip ist sowohl ein Archivierer als auch ein Kompressor.

Wenn Sie die Komprimierung vergleichen, ist gzip meiner Erfahrung nach viel besser als zip.

Und der andere signifikante Unterschied wird in einer anderen Antwort erwähnt . Wenn Sie ein sehr großes Dateiarchiv haben und eine kleine Datei extrahieren möchten, können Sie dies mit Zip tun. Mit tar.gz müssen Sie jedoch das gesamte Archiv extrahieren.

Rakesh Reddy
quelle
Kein Archiv von gzip-Dateien, sondern ein gzip von archivierten Dateien. Deshalb müssen Sie das gesamte Archiv extrahieren.
m93a
2

Die Entscheidung hängt im Wesentlichen von folgenden Faktoren ab:

  • GZIP behält Unix- Dateiberechtigungen bei , da Dateien ausgeführt werden dürfen.

  • Auf der anderen Seite ZIP arbeitet aus der Box in Windows.

Alberto Salvia Novella
quelle
1

tarund gzipsind auf * nix-es viel häufiger als unzip. Zum Beispiel gibt es im Moment auf meinem arch-2009.08 keine unzip.

nc3b
quelle
6
Aber es gibt bsdtar(einen Teil von libarchive), der gut mit ZIP umgeht.
Grawity
Ups: ">
Wusste