511

I have a file as: filename.bz2 I need to decompress.

I have tried the command: tar xvjf filename.tar.bz2, but it didn't work as the file is not a tar file.

How do I decompress this file?

0

6 Answers 6

679

Try the following:

bzip2 -d filename.bz2

Note, that this command will not preserve original archive file.

To preserve the original archive, add the -k option:

bzip2 -dk filename.bz2
4
  • 14
    You can also use bunzip2, which defaults to using the -d (uncompress) option.
    – RonaldB
    Jan 19, 2017 at 16:18
  • 3
    @LewisDiamond I ran bzip2 -d vim-8.0.tar.bz2, that results vim-8.0.tar. I couldn't enter this.
    – alhelal
    Nov 17, 2017 at 0:35
  • 7
    @alhelal that's because it's a .tar.bz2 file. You unzipped the tarball, you're left with the unzipped tarbal. Extract it with tar -x vim-8.0.tar. Originally you could have used tar -xjvf vim-8.0.tar.bz2. Nov 17, 2017 at 15:52
  • 1
    A slight correction to Lewis's comment, tar also needs -f (at least on Raspbian Wheezy) as follows tar -xf vim-8.0.tar Dec 17, 2017 at 14:29
75

To explain a bit further, a single file can be compressed with bzip2 thus:

bzip2 myfile.txt

tar is only required when compressing multiple files:

tar cvjf myfile.tar.bz *.txt

Hence, when uncompressing a .bz2 file use bunzip, when uncompressing a tar.bz2 file use tar xjvf.

3
  • 6
    Excellent advice about the xjvf, just saved me. Thanks!
    – c-o-d
    Aug 17, 2013 at 3:22
  • 5
    You can just use tar xjf filename.tar.bz2. The v just adds verbose output. Keep your terminal clean! I also had problems running tar -xjf, so be sure to try running it sans the -
    – MrOodles
    Jan 15, 2015 at 15:14
  • 1
    tar xf should be sufficient with the BSD variant — the j flag is only used when compressing
    – Mark Fox
    Oct 30, 2015 at 0:16
24

Use the bunzip2 (or bzip2 -d) command to decompress the file. For more information see this man page,

1
  • Link is broken Levon
    – user1038202
    May 19, 2019 at 6:31
20

bzip2 is mono-threaded, which means it will take a long time to decompress a large file.

To decompress a .bz2 file multithreadedly, you can use the free, open source program lbzip2:

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

-d indicates you wish to decompress the file. It would automatically determine how many threads it will use. To specify the exact number of threads you want to use, use the -n parameter, e.g.:

lbzip2 -d -n 32 my_file.bz2

A few more useful commands with lbzip2:

To compress a file with a progress bar:

pv adb_int.tar | lbzip2 > adb_int.tar.bz2

Requirements for the progress bar:

sudo apt-get install -y pv

To compress a folder:

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

To uncompress a folder:

 tar -I lbzip2 -xvf file.tar.bz2

Parameters:

-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

Some alternatives to decompress a .bz2 file multithreadedly:

pbzip2:

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

mpibzip2: designed to be used on on cluster machines.


If you need some large .bz2 files to experiment with: https://dumps.wikimedia.org/mirrors.html

For example (a 14 GB .bz2 file, 200 GB uncompressed):

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/ did the benchmark:

enter image description here


For further information regarding the parameters for lbzip2: http://explainshell.com/explain?cmd=lbzip2+-d+-n+32+my_file.bz2 :

enter image description here

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

worked for me on cygwin

4
  • 1
    It would be helpful if you could add a few sentences to your answer to explain what it does.
    – fixer1234
    May 21, 2015 at 17:25
  • 2
    @fixer1234 '-c' option copies the decompressed output to STDOUT which is then piped to tar utility and presented as filename using '-' so you can simplify it as: bzip2 -d my_file.tar.bz2 ; tar xvf my_file.tar
    – sactiw
    Jan 7, 2016 at 19:39
  • 1
    I believe even this should work bzip2 -dc my_file.tar.bz2 | tar xv i.e. no need to use -f option and corresponding '-' sign after it because tar can directly read the from STDOUT through the pipe operator. Also, feel free to drop -v option if you don't want to list files being processed.
    – sactiw
    Jan 7, 2016 at 19:45
  • 2
    This doesn't help, since the original poster already mentioned that it's not a tar archive.
    – icedwater
    Jan 15, 2016 at 2:29
-6
  1. Go to https://cloudconvert.com.
  2. Upload the file.
  3. Convert it into a .tar file.
  4. Download it.
  5. Extract it from there, in your terminal.
4
  • 7
    Isn't suitable for really large files! Feb 3, 2016 at 9:04
  • 12
    We're superusers. We want a terminal-based solution. Jun 7, 2016 at 16:41
  • 1
    @Mr. de Santos ... and thereby giving up control over your data. You can not be serious.
    – dirdi
    Sep 16, 2019 at 18:22
  • This worked great for me. Thank you. We don't need all of our solutions to be terminal-based and in my case, I don't care if I send my particular bz2 file to a service for conversion.
    – djhallx
    Sep 18, 2022 at 14:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.