Komprimiert tar Dateien tatsächlich oder gruppiert es sie einfach zusammen?

37

Normalerweise habe ich angenommen, dass tares sich um ein Komprimierungsprogramm handelt, aber ich bin mir nicht sicher, ob es tatsächlich Dateien komprimiert oder wie eine ISO-Datei, eine Datei zum Speichern von Dateien?

Der Doktor
quelle
Auch auf SuperUser .
Allquixotic

Antworten:

49

Tar ist ein Archivierungswerkzeug (Tape ARchive), es sammelt nur Dateien und deren Metadaten zusammen und erzeugt eine Datei. Wenn Sie diese Datei später komprimieren möchten, können Sie gzip / bzip2 / xz verwenden. Der Einfachheit halber bietet tar Argumente, um das Archiv automatisch für Sie zu komprimieren. Kasse der Teer - man - Seite für weitere Details.

0xAF
quelle
9
Eine leichte Klarstellung zur Antwort. Es ist GNU tar, das diese zusätzlichen Komprimierungsargumente liefert. Beispielsweise bietet Solaris tar keine Argumente für die Komprimierung.
Tero Kilkanen
5
oooh, deshalb sehe ich immer wiederthing.tar.7z
Mooing Duck
BSD tar liefert auch ein Argument für die Komprimierung, obwohl es nur zdie Komprimierungsmethode akzeptiert und bestimmt, die auf der Erweiterung basiert, während GNU tar separate zZjJArgumente für die verschiedenen Komprimierungsmethoden hat.
Wingedsubmariner
2
Lesen Sie einfach die Manpage zu BSD tar, und es stellt sich heraus, dass ich mich geirrt habe, dass BSD tar zZjJgenau wie GNU tar separate Komprimierungsfunktionen verwendet . Es erkennt jedoch automatisch die Komprimierung, wenn es dekomprimiert wird, während GNU tar dies ebenfalls erwartet zZjJ.
Wingedsubmariner
5
@wingedsubmariner: nein; Moderne GNU-Versionen werden tarautomatisch dekomprimiert, ohne dass die entsprechenden -zZjJOptionen erforderlich sind .
Jonathan Leffler
17

tarproduziert Archive; Komprimierung ist eine separate Funktion. Jedoch tar allein Raumnutzung , wenn sie auf einer großen Anzahl von kleinen Dateien verwendet reduzieren können, die kleiner als die Cluster - Größe des Dateisystems. Wenn ein Dateisystem 1-KB-Cluster verwendet, verbraucht auch eine Datei, die ein einzelnes Byte enthält, 1 KB (plus Inode). Ein tarArchiv hat diesen Overhead nicht.

Übrigens ist eine ISO-Datei nicht wirklich "eine Datei zum Speichern von Dateien" - es ist tatsächlich ein Abbild eines gesamten Dateisystems (eines, das ursprünglich für die Verwendung auf CDs entwickelt wurde), und daher ist seine Struktur erheblich komplexer.

Michael Borgwardt
quelle
3
Tatsächlich verbraucht eine leere Datei nicht 1 KB. Eine 1-1023-Byte-Datei wird.
Psusi
@psusi verbraucht also für eine Datei mit den Bytes 1-1023 immer 1024, was zu einer Verschwendung von 1023-1 Bytes führt.
Shiplu Mokaddim
2

Der ursprüngliche UNIX-Befehl tar hat Archive nicht komprimiert. Wie in einem Kommentar erwähnt, komprimiert Solaris tar nicht. Weder HP-UX noch AIX FWIW. Laut Konvention enden unkomprimierte Archive in .tar.

Mit GNU / Linux bekommen Sie GNU tar. (Sie können GNU tar auf anderen UNIX-Systemen installieren.) Standardmäßig wird es nicht komprimiert. aber es tut das entstandene Archiv mit gzip komprimiert (auch von GNU) wenn Sie liefern -z. Das herkömmliche Suffix für gzippte Dateien ist .gz, so dass Sie häufig Tarballs sehen (Slang für ein Tar-Archiv, was normalerweise impliziert, dass es komprimiert wurde), die auf enden .tar.gz. Dieses Ende impliziert, dass tar ausgeführt wurde, gefolgt von gzip, z tar cf - .|gzip -9v > archive.tar.gz. Dort finden Sie auch Archive, die auf enden .tgz, z tar czf archive.tgz ..

Edit: www.linfo.org/tar.html hat mich daran erinnert, dass GNU tar viel mehr Funktionen unterstützt als nur das Komprimieren mit gzip, und es hat mich daran erinnert, dass die Suffixe mehr als einfache Konventionen sind. Sie haben eine eingebaute Semantik. Es werden auch bzip2 ( -jfür .bz2) und altes compress ( -Zfür .Z) unterstützt. Dann schaute ich auf die Manpage und wurde daran erinnert, dass -adie gewünschte Komprimierungsmethode basierend auf dem Suffix automatisch zugeordnet wird.

Ein anderer Trottel. Wie die Linux-Manpage tar besagt, erstellt GNU Infoseiten, keine Manpages. Wenn Sie also alles über GNU tar erfahren möchten, führen Sie diese aus info tar.

tbc0
quelle
Der GNU-Teer verarbeitet Komprimierungen immer noch nicht von alleine, sondern leitet nur von / nach gzip, bzip2, compress und anderen.
ott--
Ich habe mir die Quelle angesehen . GNU tar übernimmt die Komprimierung! Die Implementierung nutzt die Wiederverwendung von Code und fundierte Architekturprinzipien für den UNIX-Benutzerbereich. "Nur Rohre" ist eine Untertreibung der Art und Weise, wie die Komprimierung fest in das Werkzeug integriert ist. Die Tatsache, dass es sich um Fork-Helfer-Programme handelt, ist technisch bedingt. Wenn Sie "nur Pipes" verteidigen möchten, geben Sie Dateinamen und Zeilennummern an und lassen Sie uns sehen, auf welcher Seite die Community steht.
tbc0
Es dauert einige Tage, bis ich diese Quelle überprüfen kann.
ott--
1

Das Dienstprogramm tar wird erst komprimiert, wenn Sie ein Argument dafür angeben [tar -z Dateiname].

AJ
quelle