Como inflar E extrair um .tar.bz2 usando a ferramenta de linha de comando 7-zip

7

Eu tenho um arquivo .tar.bz2 que quero ser descompactado e extraído por meio da ferramenta de linha de comando 7-zip.

Então, basicamente, eu estou procurando o equivalente a

tar -xjf foo.tar.bz2

com 7-zip, existe apenas a opção "x" para extrair,

7z x foo.tar.bz2

me dá o arquivo inflado foo.tar em vez de descompactar todos os diretórios dentro do tar. Qual é a opção correspondente para 7z?

Philipp
fonte
Você pode adicionar o motivo pelo qual deseja fazê-lo via 7-zip, quando o tar pode lidar com isso de maneira mais elegante.
precisa saber é o seguinte

Respostas:

3

Com o 7zip, você deve executar o comando duas vezes, uma para descompactar e novamente para extrair. O formato do arquivo tar é apenas um "maço" de tudo que está preso de ponta a ponta. Em seguida, o arquivo tar inteiro é compactado usando vários algoritmos de compactação, no exemplo bzip. Basicamente, o arquivo resultante possui duas camadas. Quando você "extrai" a camada bzip, obtém um arquivo tar, e quando extrai o arquivo tar, obtém vários arquivos individuais.

O 7zip não lida com várias camadas ao mesmo tempo, embora seja capaz de lidar com as duas camadas:

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

Na verdade, as ferramentas unix padrão funcionam da mesma maneira:

bunzip2 foo.tar.bz2
tar xf foo.tar

No entanto, o tarcomando unix possui recursos de conveniência que chamam as etapas secundárias de compactação e descompactação usando outro programa antes / depois de lidar com a parte tar. Basicamente, o -jargumento chama bzip2/ bunzip2, você simplesmente não vê o segundo passo. Da mesma forma -zchamará gzip/ gunzip, etc.

Caleb
fonte
3

Embora não seja possível fazer isso em um comando, você pode usar um pipeline de shell para encadear dois comandos 7z em uma linha de comando, da seguinte maneira:

7z e -so .\Downloads\enron_mongo.tar.bz2 | 7z e -si -ttar
Justin Dearing
fonte
2

Que tal uma versão mais curta da combinação 7z e tar usando saídas e tubos padrão?

# 7z x -so my-compressed-tarball.tar.bz2| tar xf -
slashdot
fonte
1
7z x -so foo.tar.bz2 | 7z x -si -ttar
gray1mg
fonte