Frage

Als in erster Linie Windows-Entwickler, vielleicht fehle ich etwas Kultur in der Linux-Gemeinde, aber es hat mich immer verwirrt.

Wenn etwas herunterzuladen, die die Dateien zuerst in ein .tar Archiv gestellt werden dann Reißverschluss . Warum der zweistufigen Prozess? Nicht zippen die Datei Gruppierung erreichen? Gibt es einen anderen Vorteil, dass ich bin mir nicht bewusst?

War es hilfreich?

Lösung

bzip und gzip Arbeit auf einzelne Dateien, nicht Gruppen von Dateien. Plain Old zip (und pkzip) arbeiten auf Gruppen von Dateien und haben das Konzept des Archivs eingebaut.

Die * nix-Philosophie ist eine der kleinen Tools, die sehr gut bestimmte Aufgaben zu erledigen und können miteinander verkettet werden. Deshalb gibt es zwei Tools hier die bestimmte Aufgaben haben, und sie sind entworfen, gut zusammen zu passen. Es bedeutet auch, Sie Teer Gruppendateien verwenden können, und dann haben Sie die Wahl zwischen einem Presswerkzeug (bzip, gzip, etc).

Andere Tipps

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

TAR-Dateien sind wenig mehr als eine Verkettung des Dateiinhaltes mit einigen Header, während gzip und bzip2 sind Strom-Kompressoren, die in tarballs, auf die gesamte Verkettung angewandt werden.

ZIP-Dateien sind eine Verkettung von einzeln komprimierten Dateien, mit einigen Header. Tatsächlich wird der DEFLATE Algorithmus sowohl von zip und gzip verwendet und mit entsprechenden binären Stell, können Sie die Nutzlast eines gzip Stromes nehmen und stecken es in einer Zip-Datei mit entsprechenden Header und Wörterbucheinträgen.

Das bedeutet, dass die zwei verschiedenen Archivtypen unterschiedliche Abwägungen haben. Für große Sammlungen von kleinen Dateien, gefolgt TAR durch einen Strom Kompressor normalerweise in höheren Verdichtungsverhältnis als ZIP führen wird, da der Strom Kompressor mehr Daten hat seine Wörterbuch Frequenzen aus, und somit in der Lage, Squeeze-out mehr redundante Informationen zu bauen. Auf der anderen Seite, eine (Datei-Länge erhalt) Fehler in einer ZIP-Datei wird diese Dateien komprimieren Daten, die wurden nur korrupt betroffen. Normalerweise können Kompressoren Strom nicht sinnvoll von Fehlern der Mitte des Stromes erholen. So ZIP-Dateien sind weniger anfällig für Korruption, als Teil des Archivs noch zugänglich sein wird.

Es ist seltsam, dass niemand anderes erwähnt hat, dass moderne Versionen von GNU tar ermöglicht es Ihnen, zu komprimieren, wie Sie bündeln:

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

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

Sie können auch der Kompressor Ihrer Wahl einsetzen, vorausgesetzt, es unterstützt die ‚-c‘ (auf stdout oder von stdin) und ‚-d‘ (dekomprimieren) Optionen:

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

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

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

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

und diese werden richtig behandelt werden. Wenn Sie einen Nicht-Standard-Kompressor verwenden, dann müssen Sie das angeben, wenn Sie die Extraktion zu tun.]

Der Grund für die Trennung ist, wie in der gewählten Antwort, die Trennung von Aufgaben. Unter anderem bedeutet dies, dass die Menschen das ‚cpio‘ Programm zum Verpacken der Dateien (statt tar) verwenden könnten und dann den Kompressor der Wahl verwenden (es ist einmal, war der bevorzugte Kompressor pack, später war es compress (das war viel effektiver als pack) und dann gzip, die lief Ringe um beide seine Vorgänger, und ist ganz im Wettbewerb mit zip (die Unix portiert wurde, ist aber nicht heimisch dort) und bzip2 nun die, in meiner Erfahrung, hat in der Regel ein 10-20% Vorteil gegenüber gzip.

[ Hinzugefügt : jemand bemerkte in ihrer Antwort, die lustigen Konventionen cpio hat. Das ist wahr, aber bis GNU tar die entsprechenden Optionen bekam ( ‚-T -‘), cpio war der bessere Befehl, wenn Sie nicht alles zu archivieren wollten, die unter einem bestimmten Verzeichnis war - man eigentlich genau das könnte entscheiden, welche Dateien archiviert wurden. Der Nachteil cpio war, dass man nicht nur könnte die Dateien auswählen - Sie Had um sie zu wählen. Es gibt immer noch einen Ort, an der cpio Partitur; es kann ohne Zwischenlagerung von einer Verzeichnishierarchie zum anderen eine in-situ-Kopie zu tun:

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

Im Übrigen ist die ‚-depth‘ Option auf find ist in diesem Zusammenhang wichtig - es kopiert den Inhalt von Verzeichnissen, bevor die Berechtigungen für die Verzeichnisse Einstellung selbst. Wenn ich den Befehl überprüft, bevor die Zugabe zu dieser Antwort eingegeben hat, kopierte ich einige schreibgeschützte Verzeichnisse (555 Erlaubnis); als ich ging, um die Kopie zu löschen, hatte ich die Berechtigungen für die Verzeichnisse, bevor ‚rm -fr /new/place‘ beenden konnte sich zu entspannen. Ohne die -depth Option wäre der cpio Befehl ist fehlgeschlagen. Ich erst wieder in Erinnerung, als ich die Bereinigung zu tun ging - die Formel zitiert ist, dass die automatische mir (in erster Linie auf Grund vieler Wiederholungen über viele Jahre). ]

Das Komische ist, Sie Verhalten erwartet nicht von den Machern von tar und gzip bekommen. Zum Beispiel können Sie nicht nur eine TAR-Datei gzip, können Sie auch gzip-Dateien aus Teer, eine files.gz.tar zu erzeugen (dies technisch näher an die Art und Weise pkzip Werke wäre). Oder Sie können ein anderes Programm in die Pipeline setzen, zum Beispiel einige Kryptographie, und Sie können eine beliebige Reihenfolge von Teeren, Gzipping und Verschlüsselung wählen. Wer das Kryptographie-Programm geschrieben hat nicht die geringste Ahnung, wie sein Programm verwendet werden würde, alles, was er tun muss, um von der Standardeingabe gelesen und auf der Standardausgabe schreiben.

In der Unix-Welt sind die meisten Anwendungen eine Sache zu tun, und tun es auch. Die beliebtesten Zip-Dienstprogramme in Unix, gzip und bzip2, tun nur Datei-Komprimierung. Teer wird die Datei Verkettung. die Ausgabe von Teer in ein Komprimierungsprogramm kochend tut, was nötig ist, ohne übermäßige Komplexität zu jedem Stück Software hinzufügen.

Ein weiterer Grund, es ist so weit verbreitet ist, dass tar und gzip sind auf fast die gesamte * NIX Installationsbasis gibt. Ich glaube, dies ist wahrscheinlich der größte Grund. Es ist auch, warum Zip-Dateien extrem weit verbreitet sind unter Windows, weil die Unterstützung ist eingebaut, und zwar unabhängig von den höheren Routinen in RAR oder 7z.

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

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

  • ein Archiv extrahieren: (der -C Teil ist optional, wird standardmäßig aktuelles Verzeichnis)

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

Diese sind, was ich in dem Speicher von meinen vielen Jahren auf Linux begangen habe, und vor kurzem auf Nexenta (Opensolaris).

Ich glaube, Sie wurden für mehr von historischem Kontext zu diesem suchen. Die ursprüngliche zip war für eine einzelne Datei. Teer verwendet wird, um mehrere Dateien in eine einzige Datei zu platzieren. Daher Teer und Zuziehen der zweistufigen Prozess. Warum es immer noch so dominant ist, ist heute reine Vermutung.

Aus Wikipedia für Tar_ (FILE_FORMAT)

  

In der Computersprache, Teer (abgeleitet von Bandarchiv) ist sowohl ein Dateiformat (in Form einer Art von Archiv-Bitstrom) und der Name des Programms verwendet, um solche Dateien. Das Format wurde von POSIX.1-1988 standardisiert und später POSIX.1-2001. Ursprünglich als Rohformat entwickelt, für Tape-Backup und andere sequenziellen Zugriff Geräte für Backup-Zwecke verwendet wird, wird es nun häufig verwendete Sammlungen von Dateien in eine größere Datei zusammenzustellen, für die Verteilung oder Archivierung, während Dateisysteminformationen wie Benutzer erhalten und Gruppe Berechtigungen, Daten und Verzeichnisstrukturen.

tar ist UNIX als UNIX tar

ist

Meiner Meinung nach der Grund von noch heute mit tar ist, dass es eine der (wahrscheinlich seltenen) Fällen, wo der UNIX-Ansatz es einfach perfekt gemacht gleich von Anfang an.

einen genaueren Blick auf die beteiligten Phasen Taking in Archiven zu schaffen Ich hoffe, Sie werden mir zustimmen, dass die Art und Weise der Trennung der verschiedenen Aufgaben erfolgt hier ist UNIX-Philosophie in Bestform:

  • ein Werkzeug (tar es hier einen Namen geben), spezialisiert auf die Umwandlung jeder Auswahl von Dateien, Verzeichnisse und symbolische Links mit alle relevanten Meta-Daten wie Zeitstempel, Besitzer und Berechtigungen in einem Byte-Stream.

  • und nur ein weitere beliebig austauschbar Werkzeug (gzip bz2 xz um nur ein paar Optionen), die Transformationen jeder Eingangsstrom von Bytes in einen anderen (hoffentlich) kleineren Ausgangsstrom.

Mit einem solchen Ansatz und bietet eine ganze Reihe von Vorteilen für den Anwender als auch an die Entwickler:

  • Dehnbarkeit Zulassen zu koppeln tar mit jede Kompressionsalgorithmus bereits bestehenden oder jede Kompressionsalgorithmus noch noch entwickelt werden ohne , die etwas auf dem Innenleben zu ändern tar überhaupt.

    Sobald die alle brandneu „hyper-zip-utra“ oder whater Kompressions-Tool kommt man schon bereit ist, es zu benutzen, um Ihre neue Diener mit der ganzen Kraft des tar umarmen.

  • Stabilität tar hat in den harten Einsatz seit den frühen 80ern getestet und auf numberous Betriebssysteme und Maschinen geführt.

    Die Verhinderung der Notwendigkeit, neu zu erfinden das Rad bei der Umsetzung der Speicherung Besitzer, die Berechtigungen, Zeitstempel und dergleichen immer und immer wieder für alle neue Archivierungs Werkzeug spart nicht nur eine Menge (sonst unnötig ausgegeben) Zeit in der Entwicklung, sondern garantiert auch die gleiche Zuverlässigkeit für jede neue Anwendung.

  • Konsistenz Die Benutzeroberfläche nur gleich bleibt die ganze Zeit.

    Es gibt keine Notwendigkeit zu erinnern, dass Berechtigungen für Restore-Tool A verwenden Sie haben Option --i-hope-you-rember-this-one passieren und mit dem Werkzeug B Sie haben --this-time-its-another-one zu verwenden, während Werkzeug C unter Verwendung es `--hope-you-didnt-Try-with-Tool- aS-Schalter.

    Während im Werkzeug D verwendet man es wirklich versaut hätte, wenn Sie nicht --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now benutzt haben.

tar beliebt ist vor allem aus historischen Gründen. Es gibt mehrere Alternativen zur Verfügung stehen. Einige von ihnen sind um fast so lange, wie Teer, können aber nicht Teer in der Popularität aus mehreren Gründen übertreffen.

  • cpio (alien Syntax; theoretisch konsequent, aber die Leute mögen, was sie wissen, Teer herrschte)
  • ar (beliebt vor langer Zeit, jetzt für die Verpackung von Bibliotheksdateien verwendet)
  • shar (self-Shell-Skripten zu extrahieren, hatte alle möglichen Fragen, verwendet, populär sein nie weniger)
  • zip
  • (wegen Lizenzproblemen es auf vielen Unix-Varianten nicht ohne weiteres verfügbar ist)

Ein großer Vorteil (und unten) von Teer ist, dass es weder ein Datei-Header, noch zentrales Verzeichnis von Inhalten hat. Seit vielen Jahren von Einschränkungen in der Datei-Größe leidet es daher nie (bis zu diesem Jahrzehnte, in dem eine 8-GB-Grenze auf Dateien innerhalb des Archivs wurde ein Problem gelöst Jahre).

Apperantly der einzige Nachteil von tar.gz (oder ar.Z was das betrifft), das ist, dass Sie das gesamte Archiv zu dekomprimieren haben für einzelne Dateien zu extrahieren und Auflisten Archivinhalte, verletzt nie genug Leute, um sie von Teer Fehler zu machen in großer Zahl.

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

ZIP selbst und RAR aswell ist eine Kombination der beiden Verfahren.

In der Regel in der * Nux Welt, Bündel von Dateien wird als Tarball verteilt und dann optional gzip. Gzip ist ein einfaches Programm, Datei-Komprimierung, die die Datei nicht tun hat, dass tar oder zip zu bündeln.

Zu einer Zeit, Reißverschluss nicht richtig einige der Dinge zu behandeln, die Unix-tar und Unix-Dateisysteme als normal betrachtet, wie Symlinks, gemischte Fallakten, etc. Ich weiß nicht, ob das hat sich geändert, aber das ist, warum wir verwenden Teer.

Tar = Gruppen-Dateien in 1 Dateien

GZIP = Zip die Datei

Sie spalten den Prozess in 2. Das ist es.

In dem Windows-environnement, dass Sie mehr verwendet werden könnten, die WinZip oder WinRar zu verwenden, die eine Zip tun. Der Zip-Prozess dieser Software tut Gruppe die Datei und Reißverschluss zumachen, aber sie einfach nicht sehen, diesen Prozess.

Aus dem gleichen Grunde, warum Mac-Nutzer lieben Disk-Images: Sie sind eine wirklich bequeme Möglichkeit, Sachen zu archivieren und es dann um passieren, Up- / Download oder per Email usw.

Und einfacher zu bedienen und tragbarer als Reißverschluss IMHO.

In meinen Altos-XENIX Tagen (1982) haben wir begonnen, Teer (Bandarchivierungs) verwenden, um Dateien zu extrahieren von 5 1/4 Floppy-Discs oder Streaming-Band sowie Kopie auf diese Medien. Es ist Funktionalität sehr ähnlich ist zu dem BACKUP.EXE und RESTORE.EXE Befehlen in DOS 5.0 und 6.22 als Nahrungsergänzungsmittel, so dass Sie mehrere Medien zu überbrücken, wenn es nicht nur einen in passen könnte. Der Nachteil war, dass, wenn einer der mehreren Medien Probleme hatte, das Ganze war wertlos. Teer und dd von System III stammen und hat einen Standard-Release-Dienstprogramm mit UNIX-ähnlichen OS‘wahrscheinlich aus Gründen der Abwärtskompatibilitätsgründen blieb.

Tar ist nicht nur ein Dateiformat, aber es ist ein Bandformat. Bänder speichern Daten Bit-für-Bit. Jeder Speicher Implementierung war Brauch. Tar war die Methode, mit der Sie Daten aus einem Datenträger übernehmen könnte, und speichern Sie es auf das Band in einer Weise, dass andere Leute es ohne Ihr benutzerdefiniertes Programm abrufen können.

Später kamen die Komprimierungsprogramme, und * nichts noch hatten nur eine Methode, um eine einzelne Datei zu erstellen, die mehrere Dateien enthalten ist.

Ich glaube, es ist nur Trägheit, die mit dem tar.gz Trend fortgesetzt hat. Pkzip beide begann mit Kompression und Archivierung auf einen Schlag, aber dann haben DOS-Systeme nicht haben typischerweise Bandlaufwerke angeschlossen!

Aus Wikipedia für Tar_ (FILE_FORMAT)

  

In der Computersprache, Teer (abgeleitet von Bandarchiv) ist sowohl ein Dateiformat (in Form einer Art von Archiv-Bitstrom) und der Name des Programms verwendet, um solche Dateien. Das Format wurde von POSIX.1-1988 standardisiert und später POSIX.1-2001. Ursprünglich als Rohformat entwickelt, für Tape-Backup und andere sequenziellen Zugriff Geräte für Backup-Zwecke verwendet wird, wird es nun häufig verwendete Sammlungen von Dateien in eine größere Datei zusammenzustellen, für die Verteilung oder Archivierung, während Dateisysteminformationen wie Benutzer erhalten und Gruppe Berechtigungen, Daten und Verzeichnisstrukturen.

Als Windows-Entwickler ist es verständlich, wie tarballs seltsam erscheinen. Das Wort tar steht für Tape Archive. Denken Sie Reel-to-Reel Tonbandgeräte.

In den Windows-Welt-Programmen sind in der Regel mit einem setup.exe oder install.exe installiert, die alle Arten von Zauberei in der Registry arbeiten, das Erstellen von Verzeichnissen und Installation .dll (Dynamic Link Library) Dateien.

In Linux, Ubuntu insbesondere aus meiner eigenen Erfahrung, Paket-Manager kümmern sich eine Anwendung des Nehmens und Installation es die meiste Zeit . In Ubuntu erstellt der Entwickler ein Paket endet in .deb (Debian, die auf Ubuntu basiert). Die grundlegende Syntax ein .deb zu installieren:

sudo apt install <package_name>

Obwohl diese relativ gerade nach vorn für einen Benutzer, es ist eine Menge Arbeit für die Entwickler ein .deb Paket zu erstellen und PPA in Verbindung bringen.

Eine einfachere Methode für Entwickler ist es, einen Tarball zu erstellen. Dann wird die Last der Installation wird durch die Endbenutzer geteilt. Sie müssen:

  • Laden Sie die Tarball (in der Regel in .tar.gz enden).
  • Quellcode in ein Verzeichnis entpacken.
  • den Quellcode (unbekannt in Windows for Profit Welt) kompilieren.
  • hoffentlich aufschreiben, was sie für den Fall gemacht habe sie in Zukunft wiederholen müssen, weil es keine apt Datenbank (man denke Windows installiert Programme Liste) ist, die gesichert werden können.

Wie bereits eine andere Antwort auf eine andere Frage besagt, würden wir Sie bitten, können Sie einen Tarball erstellen und Daten gleichzeitig komprimieren. Ein zwei Pass-Prozess ist nicht erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top