Распакуйте файл, сжатый в .txz и .tar, одной командой

13

У меня есть файл, сжатый в * .txz. После распаковки я получил файл * .tar. Есть ли способ распаковать его дважды одной командой? Я имею в виду распаковать файл (* .tar) .txz одной командой?

Ибо знаю, что я делаю это так:

xz -d file.txz
tar xvf file.tar

Но мне интересно, есть ли более хороший путь.

Павел Яворовский
источник

Ответы:

18
xz -d < file.tar.xz | tar xvf -

Это так же, как с любым сжатым архивом. Вы никогда не должны создавать несжатую копию исходного файла.

Некоторые tarреализации, такие как последние версии GNU, tarимеют встроенные опции для самостоятельного вызова xz.

С GNU tarили bsdtar:

tar Jxvf file.tar.xz

Тем не менее, если у вас есть версия, которая имеет -Jвероятность, она обнаружит xzфайлы автоматически, поэтому:

tar xvf file.tar.xz

будет достаточно.

Если ваш GNU или BSD tarслишком стар для xzконкретной поддержки , вы можете использовать --use-compress-programопцию:

tar --use-compress-program=xz -xvf file.tar.gz

Одним из преимуществ tarвызова утилиты компрессора является то, что она может сообщать о сбое ее в своем состоянии выхода.

Примечание: если tar.xzархив был создан с pixz, pixzвозможно, добавил tarк нему индекс, который позволяет извлекать файлы по отдельности, не распаковывая весь архив:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -
Стефан Шазелас
источник
Я должен использовать это: tar --use-compress-program = xz -xvf file.tar.gz Спасибо!
Павел Яворовский
4

Распаковка, вероятно, не правильная терминология. Вы можете распаковывать с xzи распакуйте с tar.

Страница руководства по GNU tar( man tarGNU tar по умолчанию используется в Debian) указывает, что вы можете использовать:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)

и xzподдерживает -dопцию, так что вы можете использовать:

tar --use-compress-program xz xvf file.txz 

Что гораздо менее ясно страница человека является то , что -xzи -Jявляется сокращением для --use-compress-program xzили -I xz.

И что вообще не указано на странице руководства, так это то, что вы можете просто сделать

tar xvf file.txz 

в GNU tar и что он распознает файл tar как сжатый xz.

Энтон
источник