как надуть и извлечь .tar.bz2 с помощью инструмента командной строки 7-zip

7

У меня есть файл .tar.bz2, который я хочу распаковать и извлечь с помощью инструмента командной строки 7-zip.

Так что в основном я ищу эквивалент

tar -xjf foo.tar.bz2

с 7-zip есть только опция «x» для извлечения, так что делать

7z x foo.tar.bz2

дает мне раздутый файл foo.tar вместо распаковки всех каталогов внутри tar. Какой соответствующий вариант для 7z?

Philipp
источник
Можете ли вы добавить причину, по которой вы хотите сделать это через 7-zip, когда tar может справиться с этим более элегантно.
Багавадхар

Ответы:

3

С 7zip вы должны выполнить команду дважды: один раз для распаковки и еще раз для распаковки. Формат файла tar - это всего лишь «пачка» всего, что застряло от начала до конца. Затем весь tar-файл сжимается с использованием различных алгоритмов сжатия, в вашем примере bzip. В основном полученный файл имеет два слоя. Когда вы «извлекаете» слой bzip, вы получаете файл tar, затем, когда вы извлекаете файл tar, вы получаете кучу отдельных файлов.

7zip не обрабатывает несколько слоев одновременно, хотя может обрабатывать оба слоя:

7z x foo.tar.bz2
7z x foo.tar

На самом деле стандартные инструменты Unix работают так же:

bunzip2 foo.tar.bz2
tar xf foo.tar

Однако команда unix tarимеет удобные функции, которые вызывают вторичные этапы сжатия и распаковки с использованием другой программы до / после обработки части tar. В основном -jаргумент вызывает bzip2/ bunzip2, вы просто не видите второй шаг. Аналогично -zпозвоню gzip/ gunzipи т. Д.

Калеб
источник
3

Хотя вы не можете сделать это в одной команде, вы можете использовать конвейер оболочки для объединения двух команд 7z в одну командную строку следующим образом:

7z e -so .\Downloads\enron_mongo.tar.bz2 | 7z e -si -ttar
Джастин Даринг
источник
2

Как насчет более короткой версии комбинации 7z и tar, использующей стандартный выход и трубы?

# 7z x -so my-compressed-tarball.tar.bz2| tar xf -
Slashdot
источник