Come decomprimere un file .bz2


377

Ho un file come: filename.bz2ho bisogno di decomprimere.

Ho provato il comando:, tar xvjf filename.tar.bz2ma non ha funzionato poiché il file non è un tarfile.

Come decomprimere questo file?

Risposte:


497

Prova quanto segue:

bzip2 -d filename.bz2

Si noti che questo comando non manterrà il file di archivio originale.

Per conservare l'archivio originale, aggiungere l' -kopzione:

bzip2 -dk filename.bz2

4
Puoi anche usare bunzip2, che per impostazione predefinita usa l'opzione -d (decomprimere).
RonaldB,

2
@LewisDiamond Ho corso bzip2 -d vim-8.0.tar.bz2, questo risulta vim-8.0.tar. Non ho potuto entrare in questo.
alhelal,

4
@alhelal è perché è un file .tar.bz2. Hai decompresso il tarball, ti rimane il tarbal decompresso. Estrai con tar -x vim-8.0.tar. Inizialmente avresti potuto usare tar -xjvf vim-8.0.tar.bz2.
Lewis Diamond,

Una leggera correzione al commento di Lewis, tar ha anche bisogno di -f (almeno su Raspbian Wheezy) come seguetar -xf vim-8.0.tar
JulianHarty,

65

Per spiegare un po 'di più, un singolo file può essere compresso con bzip2così:

bzip2 myfile.txt

tar è richiesto solo quando si comprimono più file:

tar cvjf myfile.tar.bz *.txt

Quindi, quando si decomprime l' .bz2uso di un file bunzip, quando si decomprime l' tar.bz2uso di un file tar xjvf.


6
Ottimo consiglio su xjvf, mi ha appena salvato. Grazie!
Edgar Aroutiounian,

4
Puoi solo usare tar xjf filename.tar.bz2. Il vsolo aggiunge l'output dettagliato. Mantieni pulito il tuo terminale! Ho anche avuto problemi con la corsa tar -xjf, quindi assicurati di provare a farlo senza il-
MrOodles

1
tar xfdovrebbe essere sufficiente con la variante BSD - il jflag viene utilizzato solo durante la compressione
Mark Fox

20

Utilizzare il comando bunzip2(o bzip2 -d) per decomprimere il file. Per ulteriori informazioni, consultare questa pagina man ,


Il collegamento è interrotto Levon
ankii

12

bzip2 è mono-thread, il che significa che ci vorrà molto tempo per decomprimere un file di grandi dimensioni.

Per decomprimere un .bz2file in modo multithread, è possibile utilizzare il programma open source gratuito lbzip2:

sudo apt-get install lbzip2
lbzip2 -d my_file.bz2

-dindica che si desidera decomprimere il file. Determinerebbe automaticamente quanti thread userà. Per specificare il numero esatto di thread che si desidera utilizzare, utilizzare il -nparametro, ad esempio:

lbzip2 -d -n 32 my_file.bz2

Alcuni comandi più utili con lbzip2:

Per comprimere una cartella:

tar -c -I lbzip2 -f file.tar.bz2 folder_name

Per decomprimere una cartella:

 tar -I lbzip2 -xvf file.tar.bz2

parametri:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)
-x, --extract, --get
      extract files from an archive
-v, --verbose
      verbosely list files processed
-f, --file ARCHIVE
      use archive file or device ARCHIVE

Alcune alternative per decomprimere un .bz2file in modo multithread:

pbzip2:

sudo apt-get install pbzip2
pbzip2 -d my_file.bz2

mpibzip2: progettato per essere utilizzato su macchine cluster.


Se hai bisogno di .bz2file di grandi dimensioni per sperimentare: https://dumps.wikimedia.org/mirrors.html

Ad esempio (un .bz2file da 14 GB , 200 GB non compresso):

wget http://dumps.wikimedia.your.org/wikidatawiki/20170120/wikidatawiki-20170120-pages-articles-multistream.xml.bz2 
lbzip2 -d -n 32 wikidatawiki-20170120-pages-articles-multistream.xml.bz2 

http://vbtechsupport.com/1614/ ha fatto il benchmark:

inserisci qui la descrizione dell'immagine


Per ulteriori informazioni sui parametri per lbzip2: http://explainshell.com/explain?cmd=lbzip2+-d+-n+32+my_file.bz2 :

inserisci qui la descrizione dell'immagine


3
bzip2 -dc my_file.tar.bz2 | tar xvf -

ha lavorato per me su Cygwin


1
Sarebbe utile se potessi aggiungere alcune frasi alla tua risposta per spiegare cosa fa.
fixer1234,

2
L'opzione '-c' di @ fixer1234 copia l'output decompresso in STDOUT che viene quindi reindirizzato all'utilità tar e presentato come nome file usando '-' in modo da poterlo semplificare come: bzip2 -d my_file.tar.bz2 ; tar xvf my_file.tar
sactiw

1
Credo che anche questo dovrebbe funzionare, bzip2 -dc my_file.tar.bz2 | tar xvcioè non c'è bisogno di usare l'opzione -f e il corrispondente segno '-' dopo di esso perché tar può leggere direttamente da STDOUT attraverso l'operatore di pipe. Inoltre, sentiti libero di rilasciare l'opzione -v se non vuoi elencare i file in elaborazione.
Sactiw

2
Questo non aiuta, dal momento che il poster originale ha già menzionato che non è un tararchivio.
acqua ghiacciata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.