Chcę skompresować kilka obrazów do archiwum .xz. Jak mogę to zrobić?
Chcę skompresować kilka obrazów do archiwum .xz. Jak mogę to zrobić?
Odpowiedzi:
Chociaż tak jak to szczegółowo opisano w Zacharee1 i heemayl, zwykle chcesz to zrobić, innym sposobem jest przesłanie danych smołowanych do polecenia:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Ponieważ Ubuntu tar
obsługuje tę J
opcję, ten alternatywny sposób jest szczególnie przydatny, gdy chcesz przekazać opcje xz
.
W tym przykładzie tar i Xzip niektóre pliki TIFF o wysokim poziomie kompresji ( -9
do xz
) i pełne wyjście ( v
do tar
, -v
do 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
Można to oczywiście zrobić w dwóch wyraźnie oddzielnych krokach:
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
Te dwa sposoby nie są tak naprawdę równoważne w działaniu, chociaż .tar.xz
pliki, które tworzą, powinny być takie same (i były, kiedy to testowałem).
tar
Is rurami ( |
) do wejścia w xz
. xz
odbiera dane z tar
niemal natychmiast i nigdy nie jest tworzony pośredni nieskompresowany plik tar. To znaczy, że pierwszy sposób jest zasadniczo równoważny dotar cJf archive files...
, z wyjątkiem dodatkowych argumentów przekazanych do xz
.xz
w drugim poleceniu. ( xz
automatycznie usuwa oryginalny plik po zakończeniu, chyba że zostanie wywołany z -k
/ --keep
.)Dla dalszego czytania, zobacz ten post Rafael van Horn a tar
i xz
strony podręcznika.
tar -J
jest określenie zmiennej środowiskowej XZ_OPT
, co sprawia, że wywołanie przypomina:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Użyj tar
z -J
opcją:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
służy do łączenia wielu plików w jeden (Archiwum), a następnie musimy skompresować archiwum za pomocą algorytmu kompresji XZ.
Od 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
Pamiętaj też, że images.tar.xz
zostanie utworzony w bieżącym katalogu, jeśli chcesz go zapisać w innym miejscu /full/path/to/images.tar.xz
.
xz
jest najwolniejszy spośród xz
, gzip
, bzip2
ze względu na jego wyższym współczynnikiem kompresji niż others..the powolność warto zajmować się jeśli chcesz więcej kompresję ..
Użyj tego polecenia: tar cJf <archive.tar.xz> <files>
. Oddziel ścieżki pliku spacją.
-cfJ
-
z przodu .. od man tar
: A function letter need not be prefixed with ``-''
więc tar cJf
jest absolutnie OK.
tar cJf
, która dałaby OP inny sposób na zrobienie tego, ponieważ moja odpowiedź była już tar --cvJf
na początku