Как сжать несколько файлов в архив .xz?

Как сжать несколько файлов в архив .xz?

Я хочу сжать несколько изображений в архив .xz. Как это сделать?

решение1

Использовать 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.

решение2

Хотя какtar cJf archive files...подробно описано Zacharee1иот heemaylобычно это то, что вам нужно сделать, другой способ — передать заархивированные данные вxzкоманда:

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

Так как Ubuntutarподдерживает Jопцию, этот альтернативный способ особенно полезен, когда вы хотите передать опции в xz.

В этом примере я сжимаю и заархивирую несколько файлов 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естьтрубчатый( |) квходиз xz. xzполучает данные из tarпочти немедленно, и промежуточный несжатый файл tar никогда не создается. Это означает, что первый способ по сути эквивалентенкtar cJf archive files..., за исключением дополнительных аргументов, переданных xz.
  • Во втором случае несжатый архив tar создается первой командой, а затем сжимается xzвторой командой. ( xzпо завершении автоматически удаляет исходный файл, если только не был вызван с помощью -k/ --keep.)

Для дальнейшего чтения см.этот пост Рафаэля ван Хорнаи tarстраницы xzруководства.

решение3

Используйте эту команду: tar cJf <archive.tar.xz> <files>. Разделяйте пути к файлам пробелом.

Связанный контент