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 tar
die J
Option 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 ( -9
to xz
) und ausführlicher Ausgabe ( v
to tar
, -v
to 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.xz
Dateien, die sie am Ende produzieren, gleich sein sollten (und waren, als ich sie getestet habe).
tar
IS verrohrt ( |
) mit dem Eingang der xz
. xz
Empfängt Daten von tar
fast 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
. ( xz
Lö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 tar
und xz
Manpages.
tar -J
besteht darin, die Umgebungsvariable anzugeben XZ_OPT
und den Aufruf so zu gestalten:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Verwendung tar
mit -J
Option:
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.xz
dies im aktuellen Verzeichnis erstellt wird, wenn Sie es an einem anderen Ort speichern möchten /full/path/to/images.tar.xz
.
xz
ist die langsamste unter xz
, gzip
, bzip2
aufgrund 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 cJf
ist absolut OK.
tar cJf
, die OP eine andere Möglichkeit geben würde, dies zu tun, da meine Antwort bereits tar --cvJf
zuerst behandelt wurde.