Как мне распаковать архив, который использует .xz?

Я привык извлекать тарболы с флагом -xfz, который обрабатывает архивы gzip и bzip2.

Недавно я столкнулся с файлом .tar.xz, и я хотел бы распаковать его за один шаг, используя tar, как я могу это сделать?

789
задан 20 January 2014 в 00:29

12 ответов

Попробуйте

tar -xJf file.pkg.tar.xz

-J - это флаг, который специально работает с файлами .xz.

0
ответ дан 20 January 2014 в 00:29

Ubuntu включает в себя GNU tar, который распознает формат самостоятельно! Одна команда работает с любым поддерживаемым методом сжатия, согласно руководству .

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar

и т. Д. Если tar выдает ошибку Cannot exec, вам может понадобиться сначала sudo apt install xz-utils.

0
ответ дан 20 January 2014 в 00:29

Если по какой-то причине решения tar не работают (возможно, потому что вы используете встроенные модули OS X), попробуйте следующее:

unxz < file.tar.xz > file.tar

… что эквивалентно 115]

xz -dc < file.tar.xz > file.tar

Затем используйте tar, чтобы распаковать файл.

0
ответ дан 20 January 2014 в 00:29

У меня была та же проблема, команда tar xf не смогла ее извлечь. Чтобы это исправить, вам нужно установить пакет xz-utils. Решение было:

sudo apt-get install xz-utils

затем:

tar xf myfile.tar.xz
0
ответ дан 20 January 2014 в 00:29

xz - компрессор данных без потерь. Вам нужно будет извлечь tar-шар из xz, а затем извлечь tar:

unxz my_archive.tar.xz      # results in my_archive.tar

Тогда вы знаете, как извлечь tar

tar -xf my_archive.tar

Источник: XZ Utils - Wikipedia .

0
ответ дан 20 January 2014 в 00:29
tar -xvf package.tar.xz

-x - извлечение файлов

-v - подробный список обработанных файлов

-f - использование указанного архивного файла

0
ответ дан 20 January 2014 в 00:29

Если tar распознает формат сжатия, вам не нужен флаг:

tar xvf *.tar.xz

Если вам нужно распаковать ввод вручную, например, потому что ваш tar слишком старый чтобы распознать xz, или вам нужен специальный путь:

xz -cd *.tar.xz | tar xvf -

Каналы работают быстрее, чем создание несжатого промежуточного файла, и занимают меньше места на диске!

0
ответ дан 20 January 2014 в 00:29

Просто хочу добавить, что если у вас есть старая версия GNU tar до версии 1.22, когда стали доступны опции --xz и -J, вы можете сжимать или распаковывать файлы tar.xz, используя --use-compress-program xz. Например,

tar --use-compress-program xz -cf example.tar.xz file1 file2 file3

или

tar --use-compress-program xz -xf example.tar.xz
0
ответ дан 20 January 2014 в 00:29

Мне нравится DTRX

sudo apt install dtrx
dtrx your-file.tar.xz
0
ответ дан 20 January 2014 в 00:29

unar - довольно приятная простая программа, которую легко набирать, для разархивирования практически любого формата, включая 7z и RAR

, кажется, она написана в (GNU) Objective-C и поэтому требует установки некоторых библиотек gnustep (реализация GNU Objective-C) ( gnustep-base-runtime и libgnustep-base1.25 )

, если вы используете --install -suggests или настроили apt для установки предложенных пакетов, unar предложит и установит много программ GUI GNUStep, которые вам не подходят

sudo apt install --no-install-suggests unar 
unar linux-source.tar.xz

, автоматически создаст выходной каталог linux-source.

0
ответ дан 20 January 2014 в 00:29

Вау, это действительно хорошо. Было ли это сделано с 7zip на Mac? Попробуйте это:

7z x -so file.tar.xz | tar xf -
0
ответ дан 20 January 2014 в 00:29

Ubuntu идет с Python (Python 2.7 и Python 3), который содержит необходимые модули для извлечения архивов. Таким образом, если по любой причине tar команда отсутствует (скажите, что Ваш системный администратор удалил ее, и Вы не имеете sudo полномочие установить его), можно использовать:

python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz 

Как короткий сценарий, это более читаемо как:

#!/usr/bin/env python3
import tarfile,sys

with tarfile.open( sys.argv[1] ) as fd:
    fd.extractall()

Предположим, что я создал .xz файл с tar cJf thing.xz /etc/passwd. Архив будет содержать etc каталог с passwd файл внутри. Используя вышеупомянутый сценарий приведет к etc каталог, созданный в Вашем текущем рабочем каталоге, и в нем, будет passwd файл. Конечно, это может всегда расширяться путем определения пути, где Вы хотите извлечь в extractall() функция.

3
ответ дан 20 January 2014 в 00:29

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

Похожие вопросы: