Я хочу сжать несколько изображений в архив .xz. Как я могу это сделать?
Я хочу сжать несколько изображений в архив .xz. Как я могу это сделать?
Ответы:
Хотя, как подробно описано в Zacharee1 и heemayl, это то, что вам нужно, другой способ - передать данные tar в команду:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Поскольку Ubuntu tar
поддерживает эту J
опцию, этот альтернативный способ особенно полезен, когда вы хотите передать опции xz
.
В этом примере я tar и xzip некоторые файлы TIFF с высоким уровнем сжатия ( -9
до xz
) и подробного вывода ( v
до tar
, -v
до 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
Это, конечно, можно также сделать в два явно отдельных шага:
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
Эти два способа на самом деле не эквивалентны в том, как они работают, хотя .tar.xz
файлы, которые они создают в конце, должны быть одинаковыми (и были, когда я проверял это).
tar
IS конвейер ( |
) на вход в xz
. xz
получает данные tar
почти сразу, и промежуточный несжатый tar-файл никогда не создается. Это говорит о том, что первый способ, по существу , эквивалентно , чтобыtar cJf archive files...
, за исключением дополнительных аргументов , переданных за исключением xz
.xz
во второй команде. ( xz
автоматически удаляет исходный файл, когда это сделано, если не вызывается с помощью -k
/ --keep
.)Для дальнейшего прочтения прочитайте этот пост Рафаэля ван Хорна и руководства tar
и xz
.
tar -J
это указать переменную окружения XZ_OPT
, сделав вызов примерно таким:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Использовать tar
с -J
опцией:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
используется для объединения нескольких файлов в один (Архив), а затем нам нужно сжать архив, используя алгоритм сжатия XZ.
От 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
Также обратите внимание, что images.tar.xz
будет создан в текущем каталоге, если вы хотите сохранить его в другом месте использования /full/path/to/images.tar.xz
.
xz
является самым медленным среди xz
, gzip
, bzip2
из - за его более высокую степень сжатия , чем others..the медлительность стоит иметь дело с , если вы хотите больше сжатия ..
Используйте эту команду: tar cJf <archive.tar.xz> <files>
. Отдельные пути к файлам с пробелом.
-cfJ
-
впереди .. из man tar
: A function letter need not be prefixed with ``-''
.. так что tar cJf
все в порядке.
tar cJf
, который даст OP другой способ сделать это, так как мой ответ уже tar --cvJf