Wie komprimiere ich mehrere Dateien in ein .xz-Archiv?


Antworten:


10

Obwohl, wie von Zacharee1 und Heemayl beschrieben, normalerweise das ist, was Sie tun möchten, besteht eine andere Möglichkeit darin, geteerte Daten an den Befehl weiterzuleiten :tar cJf archive files...xz

tar c files... | xz > archive.tar.xz

Da Ubuntu tardie JOption unterstützt , ist diese alternative Methode besonders nützlich, wenn Sie Optionen an übergeben möchten xz.

In diesem Beispiel tar und xzip ich einige TIFF-Dateien mit einem hohen Grad an Komprimierung ( -9to xz) und ausführlicher Ausgabe ( vto tar, -vto xz):

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

Dies könnte natürlich auch in zwei explizit getrennten Schritten erfolgen:

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

Diese beiden Methoden sind in ihrer Funktionsweise eigentlich nicht gleichwertig, obwohl die .tar.xzDateien, die sie am Ende produzieren, gleich sein sollten (und waren, als ich sie getestet habe).

  • In der ersten, der Ausgang des tarIS verrohrt ( |) mit dem Eingang der xz. xzEmpfängt Daten von tarfast sofort und es wird nie eine unkomprimierte Zwischen-TAR-Datei erstellt. Dies bedeutet, dass der erste Weg im Wesentlichen äquivalent zu isttar cJf archive files... , mit Ausnahme der zusätzlichen Argumente, an die übergeben wird xz.
  • Im zweiten Befehl wird mit dem ersten Befehl ein unkomprimiertes Teerarchiv erstellt und im zweiten Befehl mit komprimiert xz. ( xzLöscht automatisch die Originaldatei, wenn sie fertig ist, es sei denn, sie wird mit -k/ aufgerufen --keep.)

Weitere Informationen finden Sie in diesem Beitrag von Rafael van Horn und den tarund xzManpages.


1
+ 1..dies ist gut, wenn ein höheres (oder variierendes) Kompressionsverhältnis gewünscht wird ..
heemayl

2
Hallo 2015! Eine andere Möglichkeit, mit verschiedenen Komprimierungsstufen zu arbeiten, tar -Jbesteht darin, die Umgebungsvariable anzugeben XZ_OPTund den Aufruf so zu gestalten:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Wug

2
@ Wug Das ist eine ausgezeichnete Idee. Es scheint mir, dass es eine eigene Antwort rechtfertigt. Bist du bereit das zu posten?
Eliah Kagan

13

Verwendung tarmit -JOption:

tar -cvJf images.tar.xz /directory/containing/images/*

tar wird verwendet, um mehrere Dateien zu einer (Archiv) zu kombinieren. Anschließend müssen wir das Archiv mithilfe des XZ-Komprimierungsalgorithmus komprimieren.

Von man tar:

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

Beachten Sie auch, dass images.tar.xzdies im aktuellen Verzeichnis erstellt wird, wenn Sie es an einem anderen Ort speichern möchten /full/path/to/images.tar.xz.


hat mit dem Xzing mehrerer riesiger PSDs begonnen und um ehrlich zu sein, bietet das Archiv eine riesige Komprimierung! 400 MB + ist jetzt 200 MB
Distant Graphics

1
great..although xzist die langsamste unter xz, gzip, bzip2aufgrund seiner höheren Verdichtungsverhältnis als die others..the Langsamkeit lohnt sich zu viel mit , wenn Sie mehr Kompression wollen ..
heemayl

Meine psds insgesamt sind, wie 600-900 MB insgesamt xD
Distant Graphics

Sie sind gut zu gehen ....
heemayl

ein bisschen Fehler ._.
Ferne Grafiken

3

Verwenden Sie diesen Befehl : tar cJf <archive.tar.xz> <files>. Trennen Sie Dateipfade durch ein Leerzeichen.


Sie brauchen dies:-cfJ
AB

1
@AB: du brauchst nicht -vorne .. von man tar: A function letter need not be prefixed with ``-''..so tar cJfist absolut OK.
Heemayl

@heemayl Aber es scheint nicht zu funktionieren. Ich habe es ohne das '-' versucht, aber Teer ist nicht fertig.
AB

@heemayl Das habe ich mir gedacht.
TheWanderer

1
Beachten Sie, dass Sie bei Ihrer ersten Antwort bleiben sollten tar cJf, die OP eine andere Möglichkeit geben würde, dies zu tun, da meine Antwort bereits tar --cvJfzuerst behandelt wurde.
heemayl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.