С 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
, и т.д.
Как насчет более короткой версии 7z и комбинация tar с помощью стандарта и каналов?
# 7z x -so my-compressed-tarball.tar.bz2| tar xf -
В то время как Вы не можете сделать этого в одной команде, можно использовать конвейер оболочки к цепочке два 7z команды в одну командную строку как так:
7z e -so .\Downloads\enron_mongo.tar.bz2 | 7z e -si -ttar