Ich möchte mehrere Bilder in ein .xz-Archiv komprimieren. Wie mache ich das?
Ich möchte mehrere Bilder in ein .xz-Archiv komprimieren. Wie mache ich das?
Antworten:
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).
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.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.
tar -Jbesteht darin, die Umgebungsvariable anzugeben XZ_OPTund den Aufruf so zu gestalten:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
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.
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 ..
Verwenden Sie diesen Befehl : tar cJf <archive.tar.xz> <files>. Trennen Sie Dateipfade durch ein Leerzeichen.
-cfJ
-vorne .. von man tar: A function letter need not be prefixed with ``-''..so tar cJfist absolut OK.
tar cJf, die OP eine andere Möglichkeit geben würde, dies zu tun, da meine Antwort bereits tar --cvJfzuerst behandelt wurde.