comment gonfler ET extraire un .tar.bz2 à l'aide de l'outil de ligne de commande 7-zip

7

J'ai un fichier .tar.bz2 que je souhaite décompresser et extraire via l'outil de ligne de commande 7-zip.

Donc, fondamentalement, je cherche l'équivalent de

tar -xjf foo.tar.bz2

avec 7-zip, il n'y a que l'option "x" pour l'extrait, ce qui fait

7z x foo.tar.bz2

me donne le fichier foo.tar gonflé au lieu de décompresser tous les répertoires à l'intérieur du tar. Quelle est l'option correspondante pour 7z?

Philipp
la source
Pouvez-vous ajouter la raison pour laquelle vous voulez le faire via 7-zip lorsque le goudron peut le gérer plus élégamment.
bagavadhar

Réponses:

3

Avec 7zip, vous devez exécuter la commande deux fois, une fois pour décompresser et à nouveau pour extraire. Le format de fichier tar est juste une "liasse" de tout coincé bout à bout. Ensuite, le fichier tar entier est compressé à l'aide de divers algorithmes de compression, dans votre exemple bzip. Fondamentalement, le fichier résultant a deux couches. Lorsque vous "extrayez" la couche bzip, vous obtenez un fichier tar, puis lorsque vous extrayez le fichier tar, vous obtenez un tas de fichiers individuels.

7zip ne gère pas plusieurs couches à la fois, bien qu'il soit capable de gérer les deux couches:

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

En fait, les outils Unix standard fonctionnent de la même manière:

bunzip2 foo.tar.bz2
tar xf foo.tar

Cependant, la tarcommande unix possède des fonctionnalités pratiques qui appellent les étapes de compression et de décompression secondaires à l'aide d'un autre programme avant / après qu'il gère la partie tar. Fondamentalement, l' -jargument appelle bzip2/ bunzip2, vous ne voyez tout simplement pas la deuxième étape. De même -zappellera gzip/ gunzip, etc.

Caleb
la source
3

Bien que vous ne puissiez pas le faire dans une seule commande, vous pouvez utiliser un pipeline shell pour chaîner deux commandes 7z en une seule ligne de commande, comme suit:

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

Que diriez-vous d'une version plus courte de la combinaison 7z et tar utilisant des sorties et des tuyaux standard?

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