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 komprimiert . Warum der zweistufige Prozess? Erreicht das Zippen nicht die Dateigruppierung? Gibt es einen anderen Vorteil, den ich nicht kenne?
Antworten:
bzip
undgzip
arbeiten an einzelnen Dateien, nicht an Dateigruppen. Einfache altezip
(undpkzip
) arbeiten mit Gruppen von Dateien und haben das Konzept des Archivs eingebaut.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 Tools, die bestimmte Aufgaben haben und gut zusammenpassen. Es bedeutet auch , Sie Teer Gruppendateien verwenden können , und dann haben Sie die Wahl zwischen einem Presswerkzeug (
bzip
,gzip
usw.).quelle
tar
Archiven erwähnt wird: Unterstützung von Linux-Dateisystemberechtigungen . Was würde passieren, wenn Sie ein Debian-Paket herunterladen würden, Ihr Paketmanager es installiert hätte, aber keine der ausführbaren Dateien ausführbar wäre? Das ist der wahre Grund, warum jeder Tarballs benutzt ...;)Ein wichtiger Unterschied liegt in der Art der beiden Arten von Archiven.
TAR-Dateien sind kaum mehr als eine Verkettung des Dateiinhalts mit einigen Headern, 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 Headern. Tatsächlich wird der DEFLATE-Algorithmus sowohl von zip als auch von gzip verwendet. Bei entsprechender binärer Anpassung können Sie die Nutzdaten eines gzip-Streams in eine Zip-Datei mit entsprechenden Header- und Wörterbucheinträgen einfügen.
Dies bedeutet, dass die beiden unterschiedlichen Archivtypen unterschiedliche Kompromisse aufweisen. Bei großen Sammlungen kleiner Dateien führt TAR gefolgt von einem Stream-Kompressor normalerweise zu einem höheren Komprimierungsverhältnis als ZIP, da der Stream-Kompressor über mehr Daten verfügt, aus denen seine Wörterbuchfrequenzen erstellt werden können, und somit redundantere Informationen herausdrücken kann. Andererseits beschädigt ein Fehler (der die Dateilänge beibehält) in einer ZIP-Datei nur die Dateien, deren komprimierte Daten betroffen waren. Normalerweise können Stream-Kompressoren Fehler während des Streams nicht sinnvoll beheben. Daher sind ZIP-Dateien widerstandsfähiger gegen Beschädigungen, da ein Teil des Archivs weiterhin zugänglich ist.
quelle
Es ist seltsam, dass niemand sonst erwähnt hat, dass moderne Versionen von GNU
tar
das Komprimieren beim Bündeln ermöglichen:Sie können auch den Kompressor Ihrer Wahl verwenden, sofern er die Optionen '
-c
' (zu stdout oder von stdin) und '-d
' (dekomprimieren) unterstützt:Auf diese Weise können Sie einen alternativen Kompressor angeben.
[ Hinzugefügt : Wenn Sie Dateien extrahieren
gzip
oderbzip2
komprimieren,tar
erkennt GNU diese automatisch und führt das entsprechende Programm aus. Das heißt, Sie können verwenden:und diese werden richtig gehandhabt. Wenn Sie einen nicht standardmäßigen Kompressor verwenden, müssen Sie dies bei der Extraktion angeben.]
Der Grund für die Trennung ist, wie in der ausgewählten Antwort, die Aufgabentrennung. Unter anderem bedeutet dies, dass Benutzer das
cpio
Programm ' ' zum Packen der Dateien (anstelle vontar
) verwenden und dann den Kompressor der Wahl verwenden konnten (es war einmal der bevorzugte Kompressorpack
, später war er escompress
(was viel effektiver war als)pack
), und danngzip
lief das um seine beiden Vorgänger herum und ist völlig konkurrenzfähig mitzip
(das auf Unix portiert wurde, aber dort nicht nativ ist), und jetzt,bzip2
was meiner Erfahrung nach normalerweise einen Vorteil von 10-20% gegenüber hatgzip
.[ Hinzugefügt : Jemand hat in seiner Antwort vermerkt, dass
cpio
es lustige Konventionen gibt. Das stimmt, aber bis GNUtar
die relevanten Optionen ('-T -
') erhielt,cpio
war der bessere Befehl, wenn Sie nicht alles archivieren wollten, was sich unter einem bestimmten Verzeichnis befand - Sie konnten tatsächlich genau auswählen, welche Dateien archiviert wurden. Der Nachteilcpio
war, dass man die Dateien nicht nur auswählen konnte , sondern auch auswählen musste . Es gibt noch einen Ort, an demcpio
Punkte erzielt werden. Es kann eine In-situ-Kopie von einer Verzeichnishierarchie in eine andere ohne Zwischenspeicher erstellen:Im Übrigen ist die
-depth
Option ' 'find
in diesem Zusammenhang wichtig - sie kopiert den Inhalt von Verzeichnissen, bevor die Berechtigungen für die Verzeichnisse selbst festgelegt werden. Als ich den Befehl überprüft habe, bevor ich den Zusatz zu dieser Antwort eingegeben habe, habe ich einige schreibgeschützte Verzeichnisse kopiert (Berechtigung 555). Als ich die Kopie löschen wollte, musste ich die Berechtigungen für die Verzeichnisse lockern, bevor 'rm -fr /new/place
' beendet werden konnte. Ohne die-depth
Optioncpio
wäre der Befehl fehlgeschlagen. Ich erinnerte mich nur daran, als ich die Bereinigung durchführte - die angegebene Formel lautet für mich automatisch (hauptsächlich aufgrund vieler Wiederholungen über viele Jahre). ]]quelle
Das Lustige ist, dass Sie Verhalten bekommen können, das von den Machern von
tar
und nicht erwartet wirdgzip
. Zum Beispiel können Sie nicht nur eine TAR-Datei gzipen, sondern auch gezippte Dateien tarieren, um eine zu erstellenfiles.gz.tar
(dies wäre technisch näher an der Funktionsweisepkzip
). Sie können auch ein anderes Programm in die Pipeline aufnehmen, z. B. Kryptografie, und Sie können eine beliebige Reihenfolge für Teer, Zippen und Verschlüsseln auswählen. Wer das Kryptographieprogramm geschrieben hat, muss nicht die geringste Ahnung haben, wie sein Programm verwendet werden soll. Er muss lediglich von der Standardeingabe lesen und in die Standardausgabe schreiben.quelle
In der Unix-Welt sind die meisten Anwendungen darauf ausgelegt, eines zu tun und es gut zu machen. Die beliebtesten Zip-Dienstprogramme in Unix, gzip und bzip2 führen nur die Dateikomprimierung durch. tar führt die Dateikettung durch. Das Weiterleiten der Ausgabe von Teer an ein Komprimierungsprogramm bewirkt, was erforderlich ist, ohne dass die Software zu komplex wird.
quelle
Ein weiterer Grund dafür ist, dass sich tar und gzip auf fast der gesamten * NIX-Installationsbasis befinden. Ich glaube, dies ist wahrscheinlich der größte Grund. Dies 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 aus einem Befehl erstellen / extrahieren (ein Schritt):
tar -cfvj destination.tar.bz2 *.files
tar -cfvz destination.tar.gz *.files
Archiv extrahieren : (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 das, was ich aus meinen vielen Jahren unter Linux und kürzlich unter Nexenta (OpenSolaris) in Erinnerung behalten habe.
quelle
Ich denke, Sie haben nach mehr historischem Kontext gesucht. Die ursprüngliche Zip-Datei war für eine einzelne Datei. Tar wird verwendet, um mehrere Dateien in einer einzigen Datei zu platzieren. Daher ist Teern und Zippen der zweistufige Prozess. Warum es heute noch so dominant ist, ist unklar.
Aus Wikipedia für Tar_ (Dateiformat)
quelle
tar ist UNIX wie UNIX ist tar
Meiner Meinung nach der Grund der nach wie vor mit
tar
heute ist , dass es eine der (wahrscheinlich seltenen) Fällen , wo der UNIX Ansatz es gerade gemacht vollkommen richtig von Anfang an .Wenn Sie sich die Phasen bei der Erstellung von Archiven genauer ansehen, werden Sie hoffentlich zustimmen, dass die Art und Weise, wie die Trennung verschiedener Aufgaben hier erfolgt, die UNIX-Philosophie von ihrer besten Seite ist:
Ein Tool (
tar
um es hier zu benennen) hat sich darauf spezialisiert, eine Auswahl von Dateien, Verzeichnissen und symbolischen Links einschließlich aller relevanten Metadaten wie Zeitstempel, Eigentümer und Berechtigungen in einen Byte-Stream umzuwandeln .und nur ein weiteres willkürlich austauschbares Tool (
gzip
bz2
xz
um nur einige Optionen zu nennen), das jeden 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 zu koppeln Zulassen
tar
mit jedem Kompressionsalgorithmus bereits bestehenden oder beliebigen Komprimierungsalgorithmus noch noch entwickelt werden , ohne ändern zu müssen , alles auf dem Innenlebentar
überhaupt.Sobald das brandneue "Hyper-Zip-Utra" - oder Whater-Komprimierungs-Tool herauskommt, können Sie es bereits verwenden und Ihren neuen Diener mit der ganzen Kraft von
tar
.Die Stabilität
tar
wurde seit Anfang der 80er Jahre stark genutzt und auf zahlreichen Betriebssystemen und Maschinen getestet.Die Vermeidung der Notwendigkeit, das Rad bei der Implementierung der Speicherung von Besitz, Berechtigungen, Zeitstempeln und dergleichen für jedes neue Archivierungswerkzeug immer wieder neu zu erfinden, spart nicht nur viel (ansonsten unnötig aufgewendete) Zeit in der Entwicklung, sondern garantiert auch die gleiche Zuverlässigkeit für jedes neue Bewerbung.
Konsistenz Die Benutzeroberfläche bleibt immer gleich.
Sie müssen sich nicht daran erinnern, dass Sie zum Wiederherstellen von Berechtigungen mit Tool A die Option übergeben
--i-hope-you-rember-this-one
und Tool B verwenden müssen,--this-time-its-another-one
während Sie Tool C verwenden.Während Sie bei der Verwendung von Tool D es wirklich durcheinander gebracht hätten, wenn Sie es nicht verwendet hätten
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.quelle
Teer ist vor allem aus historischen Gründen beliebt. Es gibt verschiedene Alternativen. Einige von ihnen gibt es fast so lange wie Teer, konnten aber aus mehreren Gründen die Popularität von Teer nicht übertreffen.
Ein Hauptvorteil (und Nachteil) von tar ist, dass es weder einen Dateikopf noch ein zentrales Inhaltsverzeichnis hat. Viele Jahre lang litt es daher nie unter Einschränkungen der Dateigröße (bis zu diesem Jahrzehnt, in dem eine Beschränkung von 8 GB für Dateien im Archiv zu einem Problem wurde, das vor Jahren gelöst wurde).
Anscheinend ist der einzige Nachteil von tar.gz (oder ar.Z), dass Sie das gesamte Archiv zum Extrahieren einzelner Dateien und zum Auflisten von Archivinhalten dekomprimieren müssen, niemals genug Menschen zu verletzen, um sie in erheblicher Anzahl von tar zu trennen .
quelle
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 RAR sind eine Kombination der beiden Prozesse.
quelle
Normalerweise werden in der * nux-Welt Dateibündel als Tarballs verteilt und dann optional gezippt. Gzip ist ein einfaches Dateikomprimierungsprogramm, das nicht die Dateibündelung durchführt, die tar oder zip ausführen.
Zu einer Zeit hat zip einige der Dinge, die Unix tar und Unix-Dateisysteme als normal betrachteten, wie Symlinks, gemischte Falldateien usw., nicht richtig behandelt. Ich weiß nicht, ob sich dies geändert hat, aber deshalb verwenden wir tar.
quelle
Tar = Gruppiert Dateien in 1 Dateien
GZip = Zip die Datei
Sie teilen den Prozess in 2 auf. Das war's.
In der Windows-Umgebung sind Sie möglicherweise eher daran gewöhnt, WinZip oder WinRar zu verwenden, die eine Zip-Datei erstellen. Der Zip-Prozess dieser Software gruppiert die Datei und das Zippen, aber Sie sehen diesen Prozess einfach nicht.
quelle
Aus dem gleichen Grund, warum Mac-Benutzer Disk-Images lieben: Sie sind eine sehr bequeme Möglichkeit, Inhalte zu archivieren und sie dann weiterzugeben, hoch- / herunterzuladen oder per E-Mail zu versenden usw.
Und einfacher zu bedienen und tragbarer als Reißverschlüsse IMHO.
quelle
In meinen Altos-XENIX-Tagen (1982) haben wir begonnen, tar (Bandarchivierer) zu verwenden, um Dateien von 5 1/4 Disketten oder Streaming-Bändern zu extrahieren und auf diese Medien zu kopieren. Die Funktionalität ist den Befehlen BACKUP.EXE und RESTORE.EXE in DOS 5.0 und 6.22 als Ergänzung sehr ähnlich, sodass Sie mehrere Medien überspannen können, wenn sie nicht nur in eines passen. Der Nachteil war, dass, wenn eines der mehreren Medien Probleme hatte, das Ganze wertlos war. tar und dd stammen aus UNIX SYstem III und sind wahrscheinlich aus Gründen der Abwärtskompatibilität ein Standard-Release-Dienstprogramm mit UNIX-ähnlichen Betriebssystemen geblieben.
quelle
Tar ist nicht nur ein Dateiformat, sondern auch ein Bandformat. Bänder speichern Daten Stück für Stück. Jede Speicherimplementierung war benutzerdefiniert. Tar war die Methode, mit der Sie Daten von einer Festplatte entfernen und auf Band speichern konnten, sodass andere Personen sie ohne Ihr benutzerdefiniertes Programm abrufen konnten.
Später kamen die Komprimierungsprogramme, und * nix hatte immer noch 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 fortgesetzt hat. Pkzip begann mit Komprimierung und Archivierung auf einen Schlag, aber dann waren auf DOS-Systemen normalerweise keine Bandlaufwerke angeschlossen!
Aus Wikipedia für Tar_ (Dateiformat)
quelle
Als Windows-Entwickler ist es verständlich, wie seltsam Tarballs erscheinen. Das Wort
tar
steht für Tape Archive. Denken Sie an Tonbandgeräte.In der Windows-Welt werden Programme im Allgemeinen mit einem
setup.exe
oder installiert,install.exe
die alle Arten von Assistenten in der Registrierung ausführen, Verzeichnisse erstellen und.dll
Dateien (Dynamic Link Library) installieren .Unter Linux, insbesondere Ubuntu, kümmern sich Paketmanager aus eigener Erfahrung die meiste Zeit darum, eine Anwendung zu übernehmen und zu installieren . In Ubuntu erstellt der Entwickler ein Paket, das auf
.deb
(Debian, auf dem Ubuntu basiert) endet . Die grundlegende Syntax zum Installieren von a.deb
lautet: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:
.tar.gz
).apt
Datenbank (siehe Liste der installierten Windows-Programme) gesichert werden kann.Wie bereits in einer anderen Antwort auf eine andere von Ihnen gestellte Frage angegeben, können Sie einen Tarball erstellen und gleichzeitig Daten komprimieren. Ein Zwei-Pass-Prozess ist NICHT erforderlich.
quelle