Today you will learn how to compress files in Linux using bzip2 command.
What is File Compression?
File compression is a method by which we can save disk space by reducing the size of available data. A compressed file is a collection in which one or more files are stored.
We have several ways in Linux by which you can compress files and directories. The most popular tools are:
- gzip
- bzip2
- zip
Suggested Read: Gzip Command in Linux with Examples
In this guide, we are going to discuss the complete features of bzip2
command with examples.
bzip2
is the most popular compression tool among other similar tools used to compress files only.
But by combining it with the tar
command, you can also compress directories.
Suggested Read: Tar Command in Linux with Examples
Table of Contents
Features of bzip2 Command:
- Compress and Decompress (Extract) a File
- Reduces file size
- Display the contents of a compressed file
- Tests compressed file integrity
- Concatenate the contents of multiple files.
How to identify a bzip2 file?
You can identify the bzip2
file by its extension. The file extension of bzip2
is .bz2
.
First of all, let’s focus on some of the most important options that we can use with the bzip2
command.
Options | Explanation |
---|---|
-h, --help | Display the Help page of bzip2 Command |
-d, --decompress | Force decompression |
-z --compress | Force compression |
-k, --keep | Keep (don't delete) input files |
-f, --force | Overwrite existing output files |
-t, --test | Test compressed file integrity |
-c, --stdout | Compress or decompress to standard output. |
-q, --quiet | Suppress noncritical error messages |
-v, --verbose | Verbose mode |
-L, --license | Display software version & license |
-V, --version | Display software version & license |
-s --small | Use less memory (at most 2500k) |
-1, --fast | Compress Faster |
-9, --best | Compress Better |
You have to follow the below syntax to use bzip2
command.
bzip2 [OPTION]... [FILE]...
1. Compress a File
To compress a file using bzip2
type the following command.
Here I am compressing a file named file.txt
.
~$ bzip2 file.txt
Output:
~$ ls
file.txt.bz2
2. Compress multiple Files
You can compress multiple files using bzip2
.
To compress multiple files, pass the file names to bzip2
. Here I am compressing files named file.txt
, file1.txt
, file2.txt
, file3.txt
, file4.txt
~$ bzip2 file.txt file1.txt file2.txt file3.txt file4.txt
Output:
~$ ls
file1.txt.bz2 file2.txt.bz2 file3.txt.bz2 file4.txt.bz2 file.txt.bz2
You can also use wildcards with bzip2
. Let’s take some examples:
Ex. # 1 Compress those files whose extension is “.txt“.
~$ bzip2 *.txt
Ex. # 2 Compress those files that start with “fi“.
~$ bzip2 fi*
3. Compress a file Forcefully
To compress a file forcefully pass the -z
option to bzip2
.
~$ bzip2 -z file.txt
4. Keep (Don’t delete) input Files
bzip2
by default deletes the input file after compressing.
But if you want to keep the input files during compression, then pass the -k
option to bzip2
.
~$ bzip2 -k file.txt
Output:
~$ ls
file.txt file.txt.bz2
By the way, the -c
option helps to concatenate the contents of multiple files.
But you can also use this option to keep input files while compressing.
Here is an example.
Syntax:
bzip2 -c [INPUT FILE] > [OUTPUT FILE]
~$ bzip2 -c file.txt > newfile.txt.bz2
Now type the following command to concatenate the contents of the two files.
Here in this example, I am concatenating the contents of file.txt
and file1.txt
.
~$ bzip2 -c file1.txt >> newfile.txt.bz2
Now to decompress the file type the following command.
~$ bzip2 -d newfile.txt.bz2
Output:
~$ ls
newfile.txt
~$ cat newfile.txt
Linux is a Open Source Operating System.
I Love Linux.
5. Test compressed file integrity
To test the compressed file integrity pass -t
option to bzip2
Command.
You must be wondering what is this integrity.
Integrity means that we can check whether a Particular .bz2
file is valid or not.
Now you might be wondering what is the need to check validity.
Let me show you an example.
What if I create a .bz2
file using mv
command. Refer to the following command.
~$ mv file.txt file.txt.bz2
Now let’s check the integrity of this file.
~$ bzip2 -t file.txt.bz2
bzip2: file.txt.bz2: bad magic number (file not created by bzip2)
You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.
As you can see on the output above we received an error that “bad magic number (file not created by bzip2)” because we have not created this file using bzip2
command.
A valid .bz2
file will display the following output.
~$ bzip2 -tv file.txt.bz2
file.txt.bz2: ok
6. Decompress (Extract) a File
To Decompress (Extract) a .bz2
file pass the -d
option to bzip2
.
~$ bzip2 -d file.txt.bz2
OR you can use the bunzip2
command to extract a .bz2
file.
~$ bunzip2 file.txt.bz2
7. Decompress multiple files
To decompress multiple files, pass the file names to bzip2
. Here I am decompressing files named file1.txt
, file2.txt
, file3.txt
, file4.txt
, file.txt
.
~$ bzip2 -d file1.txt.bz2 file2.txt.bz2 file3.txt.bz2 file4.txt.bz2 file.txt.bz2
You can also use wildcards with bzip2
. Let’s take some examples:
Ex. # 1 Decompress those files whose extension is “.bz2“
~$ bzip2 -d *.bz2
Ex. # 2 Decompress those files that start with “fi“
~$ bzip2 -d fi*
8. Overwrite existing output files Forcefully
bzip2
command allows us to Overwrite existing output files forcefully.
To do so pass the -f
option to bzip2
command.
Let’s take an example.
Overwrite existing output file while Compressing:
I have a file named file.txt
and Compressed version of this file is file.txt.bz2
~$ ls
file.txt file.txt.bz2
For some reason again I want to compress the same file using bzip2
. So Let’s do it.
~$ bzip2 file.txt
bzip2: Output file file.txt.bz2 already exists.
As you can see on the output above, Command is not allowing us to compress the file saying “Output file file.txt.bz2
already exists”
In such a scenario, you can use -f
option to complete the task forcefully.
Refer to the following command.
~$ bzip2 -f file.txt
Overwrite existing output file while decompressing:
Similarly, Overwrite existing output file while decompressing using -f
option.
~$ bzip2 -df file.txt.bz2
9. bzip2 Command Compression Level’s
bzip2
allows to compress files using several compression levels which is ranges from 1
to 9
.
If you do not specify a level with the bzip2
command then it uses compression level -6
to compress files.
Compress Faster:
You can use -1
for the fastest compression speed with a lesser compression ratio.
~$ bzip2 -1 file.txt
Compress Better:
You can use -9
for lowest compression speed with maximum compression ratio.
~$ bzip2 -9 file.txt
10. Display output of a Command
To display the verbose output of the command pass the -v
option to bzip2
.
Example # 1
~$ bzip2 -v file.txt
file.txt: 0.526:1, 15.220 bits/byte, -90.24% saved, 41 in, 78 out.
Example # 2
~/data$ bzip2 -dv file.txt.bz2
file.txt.bz2: done
11. Display the contents of a Compressed File
You can display the contents of a compressed file using the bzcat
command.
Let’s take an example:
I have a file named file.txt
with some content. To display the contents of this file you can use the cat command.
~$ cat file.txt
Linux is a Open Source Operating System.
Let’s compress the file using bzip2
command.
~$ bzip2 file.txt
Now to display the contents of file.txt.bz2 using bzcat
type the following command.
~$ bzcat file.txt.bz2
Linux is a Open Source Operating System.
Type the following command to display the contents of multiple compressed files.
In this example, i am displaying the content of files named file1.txt.bz2 and file.txt.bz2
~$ bzcat file1.txt.bz2 file.txt.bz2
I Love Linux
Linux is a Open Source Operating System.
12. Reduce memory Usage
To reduce memory usage, for compression, decompression pass -s
option to bzip2
command.
In short, if your system is low on memory you should use this option.
~$ bzip2 -s file.txt
13. Display the Help page of gzip Command
Use the following commands to access the Manual Page/Help Page of bzip2
command.
~$ bzip2 --help
~$ man bzip2
14. Display Software License
To display Software License information of bzip2
command use -L
option.
~$ bzip2 -L
15. Display Version
Check the bzip2
command version using the following command.
~$ bzip2 -V
You can visit at following websites to get more information on bzip2
.
Infographic
Refer to this Infographic for complete bzip2
command options.
Conclusion
I hope you have learned something from this article.
I have tried my best to include all the features of bzip2
command in this guide.
Now I’d like to hear your thoughts.
Was this guide useful to you?
Or maybe you have some queries.
Have I not included any command in this guide?
Leave a comment below.