it-swarm.com.de

Warum benutzen die Leute Tarballs?

Als hauptsächlich Windows-Entwickler vermisse ich vielleicht etwas Kulturelles in der Linux-Community, aber es hat mich immer verwirrt.

Wenn Sie etwas herunterladen, werden die Dateien zuerst in ein .tar-Archiv gestellt und dann gezippt . Warum der zweistufige Prozess? Erreicht zip nicht die Dateigruppierung? Gibt es einen anderen Vorteil, den ich nicht kenne?

84
Brian Sullivan

bzip und gzip funktionieren mit einzelnen Dateien, nicht mit Dateigruppen. Normalerweise Zip (und pkzip) arbeiten mit Dateigruppen und verfügen über das integrierte Konzept des Archivs.

Die * nix-Philosophie ist eines der kleinen Werkzeuge, die bestimmte Aufgaben sehr gut erledigen und miteinander verkettet werden können. Aus diesem Grund gibt es hier zwei Werkzeuge, die bestimmte Aufgaben haben und so konzipiert sind, dass sie gut zusammenpassen. Es bedeutet auch, dass Sie tar zum Gruppieren von Dateien verwenden können, und dann haben Sie die Wahl zwischen einem Komprimierungswerkzeug (bzip, gzip usw.).

129
Stewart Johnson

Es ist merkwürdig, dass niemand sonst erwähnt hat, dass moderne Versionen von GNU tar es Ihnen ermöglichen, beim Bündeln zu komprimieren:

tar -czf output.tar.gz directory1 ...

tar -cjf output.tar.bz2 directory2 ...

Sie können auch den Kompressor Ihrer Wahl verwenden, vorausgesetzt, er unterstützt die Optionen '-c' (für stdout oder von stdin) und '-d' (dekomprimieren):

tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...

Auf diese Weise können Sie einen alternativen Kompressor angeben.

[Hinzugefügt: Wenn Sie aus gzip- oder bzip2-komprimierten Dateien extrahieren, erkennt GNU tar diese automatisch und führt das entsprechende Programm aus. Das heißt, Sie können verwenden:

tar -xf output.tar.gz
tar -xf output.tgz        # A synonym for the .tar.gz extension
tar -xf output.tar.bz2

und diese werden ordnungsgemäß behandelt. Wenn Sie einen nicht standardmäßigen Kompressor verwenden, müssen Sie dies beim Extrahieren angeben.]

Der Grund für die Trennung ist wie in der gewählten Antwort die Aufgabentrennung. Dies bedeutet unter anderem, dass die Benutzer das Programm 'cpio' zum Packen der Dateien (anstelle von tar) und dann den Kompressor der Wahl verwenden konnten (einmal war der bevorzugte Kompressor pack, später compress) viel effektiver als pack), und dann gzip, das um seine beiden Vorläufer herum klingelte, und ist vollständig konkurrenzfähig mit Zip (das nach Unix portiert wurde, dort aber nicht nativ ist) und jetzt bzip2, das meiner Erfahrung nach normalerweise hat ein Vorteil von 10-20% gegenüber gzip.

[Hinzugefügt: Jemand hat in seiner Antwort bemerkt, dass cpio komische Konventionen hat. Das stimmt, aber bis GNU tar die relevanten Optionen ('-T -') erhielt, war cpio der bessere Befehl, wenn Sie nicht alles archivieren wollten, was sich unter einem bestimmten Verzeichnis befand Dateien wurden archiviert. Der Nachteil von cpio war, dass Sie nicht nur könnten die Dateien auswählen - Sie hatten, um sie auszuwählen. Es gibt immer noch einen Ort, an dem cpio punktet; Es kann eine In-Situ-Kopie von einer Verzeichnishierarchie in eine andere ohne Zwischenspeicherung durchführen:

cd /old/location; find . -depth -print | cpio -pvdumB /new/place

Im Übrigen ist die Option '-depth' für find in diesem Zusammenhang wichtig - sie kopiert den Inhalt von Verzeichnissen, bevor die Berechtigungen für die Verzeichnisse selbst festgelegt werden. Wenn ich den Befehl vor der Eingabe des Zusatzes zu dieser Antwort geprüft habe, kopierte ich einige schreibgeschützte Verzeichnisse (Berechtigung 555). Als ich die Kopie löschte, musste ich die Berechtigungen für die Verzeichnisse lockern, bevor 'rm -fr /new/place' beendet werden konnte. Ohne die Option -depth wäre der Befehl cpio fehlgeschlagen. Ich erinnerte mich nur daran, als ich zur Bereinigung ging - die zitierte Formel ist diese für mich automatisch (hauptsächlich aufgrund vieler Wiederholungen über viele Jahre hinweg). ]

26

Ein wichtiger Unterschied liegt in der Natur der zwei Arten von Archiven.

TAR-Dateien sind wenig mehr als eine Verkettung des Dateiinhalts mit einigen Kopfzeilen, während gzip und bzip2 Stream-Kompressoren sind, die in Tarballs auf die gesamte Verkettung angewendet werden.

Zip-Dateien sind eine Verkettung von einzeln komprimierten Dateien mit einigen Kopfzeilen. Tatsächlich wird der DEFLATE-Algorithmus sowohl von Zip als auch von gzip verwendet, und bei entsprechender binärer Anpassung könnten Sie die Nutzdaten eines gzip-Streams in eine Zip-Datei mit entsprechenden Header- und Wörterbucheinträgen packen.

Dies bedeutet, dass die zwei verschiedenen Archivtypen unterschiedliche Kompromisse haben. Bei großen Sammlungen kleiner Dateien führt die TAR, gefolgt von einem Stream-Kompressor, normalerweise zu einer höheren Kompressionsrate als Zip, da der Stream-Kompressor mehr Daten zum Erstellen der Verzeichnisfrequenzen hat und somit mehr redundante Informationen herauspressen kann. Auf der anderen Seite werden durch einen (dateilängenerhaltenden) Fehler in einer Zip-Datei nur die Dateien beschädigt, auf die die komprimierten Daten angewendet wurden. Normalerweise können Stream-Kompressoren während des Streams nicht sinnvoll nach Fehlern wiederhergestellt werden. Zip-Dateien sind daher unempfindlicher gegen Beschädigungen, da ein Teil des Archivs weiterhin zugänglich ist.

25
Barry Kelly

Das Lustige ist, dass Sie Verhalten erhalten können, das von den Erstellern von tar und gzip nicht erwartet wird. Sie können beispielsweise nicht nur eine TAR-Datei gzipen, sondern auch gezippte Dateien tarieren, um einen files.gz.tar zu erzeugen (dies wäre technisch näher an der Funktionsweise von pkzip). Oder Sie können ein anderes Programm in die Pipeline aufnehmen, z. B. eine Verschlüsselung, und Sie können eine beliebige Reihenfolge für Tarring, Gziping und Verschlüsselung wählen. Wer das Kryptographieprogramm geschrieben hat, muss nicht die geringste Ahnung haben, wie sein Programm verwendet wird. Alles, was er tun muss, ist das Lesen der Standardeingabe und das Schreiben in die Standardausgabe.

15
Svante

In der Unix-Welt sind die meisten Anwendungen so konzipiert, dass sie eine Sache tun und dies gut tun. Die beliebtesten Zip-Dienstprogramme in Unix, gzip und bzip2, führen nur die Dateikomprimierung durch. tar führt die Dateikettung aus. Wenn Sie die Ausgabe von tar in ein Komprimierungsprogramm leiten, werden die erforderlichen Anforderungen erfüllt, ohne dass die Software übermäßig komplex wird.

8
Harper Shelby

Ein weiterer Grund ist, dass es so weit verbreitet ist, dass tar und gzip auf fast der gesamten * NIX-Installationsbasis da draußen sind. Ich glaube, das ist wahrscheinlich der größte Grund. Es ist auch der Grund, warum Zip-Dateien unter Windows extrem verbreitet sind, da die Unterstützung unabhängig von den überlegenen Routinen in RAR oder 7z integriert ist.

Mit GNU tar können Sie diese Dateien auch mit einem einzigen Befehl erstellen/extrahieren (ein Schritt):

  • Ein Archiv erstellen:
  • tar -cfvj destination.tar.bz2 *.files
  • tar -cfvz destination.tar.gz *.files

  • Extrahieren Sie ein Archiv: (der -C-Teil ist optional, standardmäßig wird das aktuelle Verzeichnis verwendet)

  • tar -xfvj archive.tar.bz2 -C destination_path
  • tar -xfvz archive.tar.gz -C destination_path

Dies ist, was ich seit vielen Jahren unter Linux und vor kurzem bei Nexenta (OpenSolaris) in Erinnerung habe. 

7
Bryan Rehbein

Ich denke, Sie suchten nach mehr historischem Kontext. Die ursprüngliche Zip-Datei war für eine einzelne Datei. Tar wird verwendet, um mehrere Dateien in einer einzigen Datei zu platzieren. Teer- und Reißverschluß ist daher der zweistufige Vorgang. Warum es heute noch so dominant ist, kann man nicht vermuten.

Aus Wikipedia für Tar_ (file_format)

In der Datenverarbeitung ist tar (abgeleitet vom Bandarchiv) sowohl ein Dateiformat (in Form eines Archivbitstromtyps) als auch der Name des Programms, mit dem solche Dateien verarbeitet werden. Das Format wurde von POSIX.1-1988 und später von POSIX.1-2001 standardisiert. Ursprünglich als unformatiertes Format entwickelt, das für Bandsicherungen und andere sequenzielle Zugriffsgeräte zu Sicherungszwecken verwendet wird, wird es jetzt üblicherweise verwendet, um Sammlungen von Dateien zu einer größeren Datei zusammenzufassen, zu verteilen oder zu archivieren, während Dateisysteminformationen wie Benutzer und Gruppen erhalten bleiben Berechtigungen, Datumsangaben und Verzeichnisstrukturen.

5
martinatime

tar ist UNIX, da UNIX tar ist

Meines Erachtens besteht der Grund für noch mit tar heute darin, dass dies einer der (wahrscheinlich seltenen) Fälle ist, in denen der UNIX-Ansatz von Anfang an genau richtig war.

Wenn Sie sich die Phasen der Erstellung von Archiven genauer ansehen, hoffe ich, dass Sie zustimmen, dass die Trennung der verschiedenen Aufgaben hier UNIX-Philosophie am besten ist:

  • ein Werkzeug (tar, um hier einen Namen zu geben), spezialisiert auf die Umwandlung von any Auswahl von Dateien, Verzeichnissen und symbolischen Links einschließlich all relevanten Metadaten wie Zeitstempeln, Besitzern und Berechtigungen in ein Byte Strom.

  • und nur ein weiteres beliebig austauschbares Werkzeug (gzipbz2xz, um nur einige Optionen zu nennen), das any Eingabestrom von Bytes in einen anderen (hoffentlich) kleineren Ausgabestrom umwandelt. 

Die Verwendung eines solchen Ansatzes bietet sowohl dem Benutzer als auch dem Entwickler eine Reihe von Vorteilen:

  • Erweiterbarkeit Ermöglicht das Koppeln von tar mit beliebig Kompressionsalgorithmus oder beliebig Kompressionsalgorithmus, der noch entwickelt werden muss ohne irgendetwas an den Innenfunktionen von tar ändern zu müssen.

    Sobald das brandneue "Hyper-Zip-utra" oder Whater-Compression-Tool herauskommt, können Sie es jetzt schon nutzen und Ihren neuen Diener mit der ganzen Kraft von tar umarmen. 

  • Stabilitättar wurde seit den frühen 80er-Jahren intensiv getestet und auf zahlreichen Betriebssystemen und Maschinen ausgeführt. 

    Um die Notwendigkeit zu vermeiden, neu zu erfinden das Rad beim Implementieren des Speicherns von Besitzrechten, Berechtigungen, Zeitstempeln und dergleichen immer und immer wieder für every neues Archivierungswerkzeug zu implementieren, spart nicht nur viel der (ansonsten unnötig aufgewendeten) Zeit in der Entwicklung, garantiert jedoch für jede neue Anwendung dieselbe Zuverlässigkeit.

  • Konsistenz Die Benutzeroberfläche bleibt einfach immer gleich.

    Es ist nicht nötig, sich daran zu erinnern, dass Sie zum Wiederherstellen der Berechtigungen mit dem Werkzeug A die Option --i-hope-you-rember-this-one übergeben müssen. Wenn Sie das Werkzeug B verwenden, müssen Sie --this-time-its-another-one verwenden, während Sie das Werkzeug C verwenden. Dies ist `--hope-you-did-try-with-tool-as-switch ' . 

    Während Sie das Werkzeug D verwenden, hätten Sie es wirklich vermasselt, wenn Sie --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now nicht verwendet hätten. 

4
mikyra

tar ist meist aus historischen Gründen beliebt. Es stehen verschiedene Alternativen zur Verfügung. Einige von ihnen sind fast so lange wie Teer in der Nähe, konnten den Teer jedoch aus mehreren Gründen nicht beliebter machen.

  • cpio (Alien-Syntax; theoretisch konsistenter, aber die Leute mögen, was sie wissen, Teer setzte sich durch)
  • ar (vor langer Zeit beliebt, wird jetzt zum Packen von Bibliotheksdateien verwendet)
  • shar (selbstextrahierende Shell-Skripte, hatte alle möglichen Probleme, war aber trotzdem populär)
  • Zip (aufgrund von Lizenzproblemen war es auf vielen Unices nicht ohne weiteres verfügbar)

Ein großer Vorteil (und Nachteil) von tar ist, dass es weder einen Dateiheader noch ein zentrales Inhaltsverzeichnis besitzt. Seit Jahren hat es daher nie an Einschränkungen in Bezug auf die Dateigröße gelitten (bis zu diesem Jahrzehnt, als eine Beschränkung auf 8 GB für Dateien im Archiv zu einem Problem wurde, das vor Jahren gelöst wurde).

Offensichtlich der einzige Nachteil von tar.gz (oder ar.Z für diese Angelegenheit), das heißt, dass Sie das gesamte Archiv dekomprimieren müssen, um einzelne Dateien zu extrahieren und den Archivinhalt aufzulisten .

3
edgar.holleis

gzip und bzip2 ist einfach ein Kompressor, keine Archivierungssoftware. Daher die Kombination. Sie benötigen die tar-Software, um alle Dateien zu bündeln.

Zip selbst und auch RAR sind eine Kombination der beiden Prozesse.

2
jishi

Normalerweise werden in der * nux-Welt Dateibündel als Tarballs verteilt und dann optional komprimiert. Gzip ist ein einfaches Dateikomprimierungsprogramm, das nicht die Dateibündelung durch tar oder zip ausführt.

Zu einem bestimmten Zeitpunkt hat Zip einige der Dinge, die Unix-tar- und Unix-Dateisysteme als normal betrachteten, wie Symlinks, gemischte Falldateien usw., nicht richtig verarbeitet. Ich weiß nicht, ob sich das geändert hat, aber deshalb verwenden wir tar.

2
Paul Tomblin

Aus demselben Grund, warum Mac-Benutzer Festplatten-Images lieben: Sie sind eine wirklich bequeme Möglichkeit, Daten zu archivieren und dann weiterzugeben, hoch-/herunterzuladen oder per E-Mail zu versenden usw. 

Und einfacher zu bedienen und tragbarer als IMHO Zips.

1
Tobias

Tar = Gruppiert Dateien in 1 Dateien

GZip = Zip der Datei

Sie teilen den Prozess in 2 auf. Das ist es.

In der Windows-Umgebung werden Sie möglicherweise häufiger für die Verwendung von WinZip oder WinRar verwendet, die einen Zip ausführen. Der Zip-Prozess dieser Software gruppiert die Datei und das Zippen, aber Sie sehen diesen Prozess einfach nicht.

1

In meinen Altos-XENIX-Tagen (1982) begannen wir mit tar (Tape Archiver), um Dateien von 5 1/4 Disketten oder Streaming-Tape zu extrahieren und auf diese Medien zu kopieren. Seine Funktionalität ist den BACKUP.EXE- und RESTORE.EXE-Befehlen in DOS 5.0 und 6.22 als Ergänzungen sehr ähnlich, so dass Sie mehrere Medien umfassen können, wenn nur ein einziger Datenträger passt. Der Nachteil war, dass, wenn eines der mehreren Medien Probleme hatte, das Ganze wertlos war. tar und dd stammen von UNIX SYstem III und sind ein Standard-Dienstprogramm mit UNIX-ähnlichen Betriebssystemen, wahrscheinlich aus Gründen der Abwärtskompatibilität. 

1
Frank R.

Als Windows-Entwickler ist es verständlich, wie Tarballs seltsam erscheinen. Das Wort tar steht für Tape Archive. Stellen Sie sich Tonbandgeräte vor.

In der Windows-Welt werden Programme im Allgemeinen mit einem setup.exe oder install.exe installiert, die alle Arten von Zauberei in der Registry ausführen, Verzeichnisse erstellen und .dll (Dynamic Link Library) -Dateien installieren.

In Linux, insbesondere Ubuntu aus eigener Erfahrung, kümmern sich Paketmanager darum, eine Anwendung anzunehmen und zu installieren meistens . In Ubuntu erstellt der Entwickler ein Paket mit der Bezeichnung .deb (Debian, auf dem Ubuntu basiert). Die grundlegende Syntax für die Installation eines .deb lautet:

Sudo apt install <package_name>

Obwohl dies für einen Benutzer relativ einfach ist, ist es für Entwickler eine Menge Arbeit, ein .deb-Paket zu erstellen und PPA zuzuordnen.

Eine einfachere Methode für Entwickler ist das Erstellen eines Tarballs. Dann wird die Installationslast vom Endbenutzer geteilt. Sie müssen:

  • laden Sie den Tarball herunter (normalerweise .tar.gz).
  • dekomprimieren Sie den Quellcode in ein Verzeichnis.
  • kompilieren Sie den Quellcode (unbekannt in Windows für Profit-Welt).
  • schreiben Sie hoffentlich auf, was sie getan haben, falls sie in der Zukunft wiederholt werden müssen, da es keine apt-Datenbank gibt (denken Sie an die Liste der installierten Windows-Programme), die gesichert werden kann.

Da bereits in einer anderen Antwort eine andere Frage angegeben ist, KÖNNEN Sie ein Tarball erstellen und gleichzeitig Daten komprimieren. Ein Vorgang mit zwei Durchläufen ist NICHT erforderlich.

0

Tar ist nicht nur ein Dateiformat, sondern auch ein Bandformat. Bänder speichern Daten bitweise. Jede Speicherimplementierung war benutzerdefiniert. Tar war die Methode, mit der Sie Daten von einer Festplatte abziehen und auf Band speichern konnten, sodass andere Benutzer sie ohne Ihr benutzerdefiniertes Programm abrufen konnten.

Später kamen die Komprimierungsprogramme, und * nix hatte nur eine Methode zum Erstellen einer einzelnen Datei, die mehrere Dateien enthielt.

Ich glaube, es ist nur die Trägheit, die sich mit dem tar.gz-Trend fortsetzt. Pkzip startete mit Kompression und Archivierung auf einen Schlag, aber dann hatten DOS-Systeme normalerweise keine Bandlaufwerke angeschlossen!

Aus Wikipedia für Tar_ (Dateiformat)

In der Datenverarbeitung ist tar (abgeleitet vom Bandarchiv) sowohl ein Dateiformat (in Form eines Archivbitstromtyps) als auch der Name des Programms, mit dem solche Dateien verarbeitet werden. Das Format wurde von POSIX.1-1988 und später von POSIX.1-2001 standardisiert. Ursprünglich als unformatiertes Format entwickelt, das für Bandsicherungen und andere sequenzielle Zugriffsgeräte zu Sicherungszwecken verwendet wird, wird es jetzt üblicherweise verwendet, um Sammlungen von Dateien zu einer größeren Datei zusammenzufassen, zu verteilen oder zu archivieren, während Dateisysteminformationen wie Benutzer und Gruppen erhalten bleiben Berechtigungen, Datumsangaben und Verzeichnisstrukturen.

0
Kieveli