How to Compress and Decompress bz2 Files in Linux

In this article, I will be showing you how you can compress and decompress files using the bz2 format in Linux on the command line.

Compression in computing has been around for decades, and new formats of compression come out every so often that are more efficient than others. In this article, I will be showing you how you can compress and decompress files using the bz2 format in Linux on the command line.

What is the bz2 format?

According to their manual file:

bzip2 compresses files using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding. Compression is generally considerably better than that achieved by more conventional LZ77/LZ78-based compressors, and approaches the performance of the PPM family of statistical compressors.

https://linux.die.net/man/1/bzip2

Installing bzip2

Depending on your Linux operating system, you may need to install a package to use it.

First, check to see if you have the package:

which bzip2

If you get a response such as /usr/bin/bzip2, /bin/bzip2, etc. then you have it installed already! Otherwise, use one of the following commands to install it:

# on Ubuntu/Debian based operating systems
sudo apt install bzip2

# on CentOS based operating systems
sudo yum install bzip2

# on Arch Linux and Arch based systems
pacman -Sy bzip2

Using bzip2 to compress file(s)

You can use the following command to compress a single file:

# -z tells bzip2 to compress.
bzip2 -z yourfile

WARNING: bzip2 will delete input files (those that you have compressed) once it has finished. To have it keep the files, append -k to the command, like so:

# -z tells bzip2 to compress and -k tells bzip2 to keep the input files after it has finished
bzip2 -kz yourfile

Using bzip2 to compress folders/directories

To use bzip2 on a folder or directory, you will need to make a .tar archive first, then use bzip2 on the folder.

Making a tar archive is easy! Use the following command on the folder you want to make a tar file of:

# -c tells tar to create a new archive, -f tells it to store the archive to the specified file
tar -c -f myarchive.tar ./folder1/ ./folder2/ ./folder3/ ./myfile.txt

You now have a .tar version of your folder(s) and file(s).

Now we can use the bzip2 command to compress the file, as in the above instructions:

# -z tells bzip2 to compress.  (if you want to keep the original .tar file, use -kz instead of just -z)
bzip2 -z myarchive.tar

Now, we have a new file: archive.tar.bz2, which, depending on your use case, will save you a lot of disk space for archiving purposes.

Using bzip2 to decompress files

Once you have a .bz2, .bz, .tbz2, or .tbz file, you can decompress it with the following command:

# -d tells bzip2 to decompress, use -dk instead to keep the original bzip2 file, otherwise it will be deleted.
bzip2 -d mycompressedfile.bz2

Using tar to decompress .tar.bz2 files

# -x tells tar to extract, -j tells tar to use bzip2, -f tells tar which file to decompress
tar -xjf myarchive.tar.bz2

Conclusion

While commands like these are not always easy to remember, you can always use the man command, then press / and type what you want to search for in the man page.