Я привык извлекать тарболы с флагом -xfz
, который обрабатывает архивы gzip и bzip2.
Недавно я столкнулся с файлом .tar.xz
, и я хотел бы распаковать его за один шаг, используя tar
, как я могу это сделать?
Попробуйте
tar -xJf file.pkg.tar.xz
-J
- это флаг, который специально работает с файлами .xz.
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
.
Если по какой-то причине решения tar
не работают (возможно, потому что вы используете встроенные модули OS X), попробуйте следующее:
unxz < file.tar.xz > file.tar
… что эквивалентно 115]
xz -dc < file.tar.xz > file.tar
Затем используйте tar
, чтобы распаковать файл.
У меня была та же проблема, команда tar xf
не смогла ее извлечь. Чтобы это исправить, вам нужно установить пакет xz-utils
. Решение было:
sudo apt-get install xz-utils
затем:
tar xf myfile.tar.xz
xz - компрессор данных без потерь. Вам нужно будет извлечь tar-шар из xz, а затем извлечь tar:
unxz my_archive.tar.xz # results in my_archive.tar
Тогда вы знаете, как извлечь tar
tar -xf my_archive.tar
Источник: XZ Utils - Wikipedia .
tar -xvf package.tar.xz
-x
- извлечение файлов
-v
- подробный список обработанных файлов
-f
- использование указанного архивного файла
Если tar распознает формат сжатия, вам не нужен флаг:
tar xvf *.tar.xz
Если вам нужно распаковать ввод вручную, например, потому что ваш tar слишком старый чтобы распознать xz, или вам нужен специальный путь:
xz -cd *.tar.xz | tar xvf -
Каналы работают быстрее, чем создание несжатого промежуточного файла, и занимают меньше места на диске!
Просто хочу добавить, что если у вас есть старая версия 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
Мне нравится DTRX
sudo apt install dtrx
dtrx your-file.tar.xz
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
.
Вау, это действительно хорошо. Было ли это сделано с 7zip на Mac? Попробуйте это:
7z x -so file.tar.xz | tar xf -
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()
функция.