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

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

3 ответа

Решение

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

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

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

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

Использование 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,

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

Другие вопросы по тегам