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

Ich habe normalerweise angenommen, dass tar ein Komprimierungsdienstprogramm ist, aber ich bin mir nicht sicher, ob es tatsächlich Dateien komprimiert. oder ist es wie eine ISO-Datei, eine Datei zum Speichern von Dateien?

Kommentare

Antwort

Tar ist ein Archivierungswerkzeug (Tape ARchive) 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. Weitere Informationen finden Sie in der tar-Manpage .

Kommentare

  • Eine leichte Klarstellung der Antwort. Es ist GNU tar, das diese zusätzlichen Komprimierungsargumente bereitstellt. Zum Beispiel liefert Solaris tar keine Argumente für die Komprimierung.
  • oooh, aus diesem Grund wird ' immer wieder thing.tar.7z
  • BSD tar bietet ebenfalls ein Argument für die Komprimierung, akzeptiert jedoch nur z und bestimmt die Komprimierungsmethode basierend auf der Erweiterung, während GNU tar separate zZjJ Argumente für die verschiedenen Komprimierungsmethoden.
  • Lesen Sie einfach die BSD-Tar-Manpage, und es stellte sich heraus, dass ich mich geirrt habe. BSD-Tar verwendet separate zZjJ zur Komprimierung genau wie GNU tar. Beim Dekomprimieren wird die Komprimierung jedoch automatisch erkannt, während GNU tar dann auch zZjJ erwartet.
  • @wingedsubmariner: no; Moderne Versionen von GNU tar dekomprimieren automatisch, ohne dass die Optionen -zZjJ erforderlich sind.

Antwort

tar erstellt Archive; Komprimierung ist eine separate Funktion. Jedoch kann tar allein die Speicherplatznutzung reduzieren, wenn eine große Anzahl kleiner Dateien verwendet wird, die kleiner als die Clustergröße des Dateisystems sind. Wenn ein Dateisystem 1 KB verwendet Cluster, selbst eine Datei, die ein einzelnes Byte enthält, verbraucht 1 KB (plus Inode). Ein tar -Archiv hat diesen Overhead nicht.

Übrigens, eine ISO Datei ist nicht wirklich „eine Datei zum Speichern von Dateien“ – es ist eigentlich ein Image eines gesamten Dateisystems (eines, das ursprünglich für die Verwendung auf CDs entwickelt wurde), und daher ist seine Struktur erheblich komplexer.

Kommentare

  • Tatsächlich verbraucht eine leere Datei nicht 1 KB. Eine 1-1023-Byte-Datei wird.
  • @psusi. Für eine Datei mit Bytes verbraucht 1-1023 immer 1024, was zu einer Verschwendung von 1023-1 Byte führt.

Antwort

Der ursprüngliche UNIX-Befehl tar hat keine Archive komprimiert. Wie in einem Kommentar erwähnt, wird Solaris tar nicht komprimiert. HP-UX und AIX FWIW werden nicht komprimiert. Konventionell enden unkomprimierte Archive standardmäßig mit .tar.

Unter GNU / Linux erhalten Sie GNU tar. (Sie können GNU tar auf anderen UNIX-Systemen installieren.) Standardmäßig wird es nicht komprimiert, komprimiert jedoch das resultierende Archiv mit gzip (auch von GNU), wenn Sie -z angeben. Das herkömmliche Suffix für komprimierte Dateien lautet .gz, sodass Sie häufig Tarballs sehen (Slang für einen Teer) Archiv, was normalerweise bedeutet, dass es komprimiert wurde), das mit .tar.gz endet. Dieses Ende impliziert, dass tar ausgeführt wurde, gefolgt von gzip, z. B. tar cf - .|gzip -9v > archive.tar.gz Sie finden auch Archive, die mit .tgz enden, z tar czf archive.tgz ..

Bearbeiten: www.linfo.org/tar.html erinnerte mich daran, dass GNU tar viel mehr Funktionen unterstützt als nur das Komprimieren mit gzip, und es erinnerte mich daran, dass die Suffixe mehr als nur einfache Konventionen sind. Sie haben eine eingebaute Semantik. Es unterstützt auch bzip2 (-j für .bz2) und alte Komprimierung (-Z für .Z). Dann habe ich mir die Manpage angesehen und wurde daran erinnert, dass -a Ihre gewünschte Komprimierungsmethode automatisch basierend auf dem Suffix abbildet.

Eine weitere Nit. Wie in der Linux-Tar-Manpage angegeben, erstellt GNU Infoseiten und keine Manpages. Um alles über GNU-Tar zu erfahren, führen Sie info tar aus.

Kommentare

  • Der GNU-Teer ' verarbeitet Komprimierungen immer noch nicht selbst, sondern leitet sie nur an / von gzip, bzip2, compress und anderen weiter.
  • Ich habe mir die Quelle angesehen. GNU Teer übernimmt die Komprimierung! Die Implementierung nutzt die Wiederverwendung von Code und solide Architekturprinzipien des UNIX-Benutzerraums. " Nur Pipes " verstehen, wie die Komprimierung eng in das Tool integriert ist.Die Tatsache, dass es sich um Gabelhilfsprogramme handelt, ist eine technische Tatsache. Wenn Sie " nur Pipes verteidigen möchten, ", zitieren Sie Dateinamen und Zeilennummern und lassen Sie ' s sehen, auf welcher Seite die Community steht.
  • Es dauert einige Tage, bis ich diese Quelle überprüfen kann.

Antwort

Das Dienstprogramm

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.