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
- Auch auf SuperUser .
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 separatezZjJ
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 auchzZjJ
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
tar wird erst komprimiert, wenn Sie ein Argument dafür angeben [tar -z Dateiname].