Home Linux Commands How To Compress And Decompress Files In Linux

How To Compress And Decompress Files In Linux

By sk
Published: Last Updated on 29.2K views

Compressing is quite useful when backing up important files and also sending large files over Internet. In this tutorial, we will discuss how to compress and decompress files in Linux using two command line programs namely gzip and bzip2.

Note:

Compressing an already compressed file adds extra overhead, hence you will get a slightly bigger file. So, stop compressing a compressed file.

Compress and decompress files in Linux

As stated already, the most commonly used programs compress files in Linux and Unix-like systems are:

  1. gzip
  2. bzip2

First, we will see the usage of Gzip.

1. Compress and decompress files using Gzip program

The gzip is a utility to compress and decompress files using Lempel-Ziv coding (LZ77) algorithm.

1.1 Compress files

To compress a file named ostechnix.txt, replacing it with a gzipped compressed version, run:

$ gzip ostechnix.txt

Gzip will replace the original file ostechnix.txt with a gzipped compressed version named ostechnix.txt.gz.

The gzip command can also be used in other ways too. One fine example is we can create a compressed version of a specific command's output. Look at the following command.

$ ls -l Downloads/ | gzip > ostechnix.txt.gz

The above command creates compressed version of the directory listing of Downloads folder.

1.2 Compress files and write the output to different files (Don't replace the original file)

By default, gzip program will compress the given file, replacing it with a gzipped compressed version. You can, however, keep the original file and write the output to standard output. For example, the following command, compresses ostechnix.txt and writes the output to output.txt.gz.

$ gzip -c ostechnix.txt > output.txt.gz

Similarly, to decompress a gzipped file specifying the output filename:

$ gzip -c -d output.txt.gz > ostechnix1.txt

The above command decompresses the output.txt.gz file and writes the output to ostechnix1.txt file. In both cases, it won't delete the original file.

1.3 Decompress files

To decompress the file ostechnix.txt.gz, replacing it with the original uncompressed version, we do:

$ gzip -d ostechnix.txt.gz

We can also use gunzip to decompress the files.

$ gunzip ostechnix.txt.gz

1.4 View contents of compressed files without decompressing them

To view the contents of the compressed file using gzip without decompressing it, use -c flag as shown below:

$ gunzip -c ostechnix1.txt.gz

Alternatively, use zcat utility like below.

$ zcat ostechnix.txt.gz

You can also pipe the output to "less" command to view the output page by page like below.

$ gunzip -c ostechnix1.txt.gz | less
$ zcat ostechnix.txt.gz | less

Alternatively, there is a zless program which performs the same function as the pipeline above.

$ zless ostechnix1.txt.gz

1.5 Compress file with gzip by specifying compression level

Another notable advantage of gzip is it supports compression level. It supports 3 compression levels as given below.

  • 1 - Fastest (Worst)
  • 9 - Slowest (Best)
  • 6 - Default level

To compress a file named ostechnix.txt, replacing it with a gzipped compressed version with best compression level, we use:

$ gzip -9 ostechnix.txt

1.6 Concatenate multiple compressed files

It is also possible to concatenate multiple compressed files into one. How? Have a look at the following example.

$ gzip -c ostechnix1.txt > output.txt.gz
$ gzip -c ostechnix2.txt >> output.txt.gz

The above two commands will compress ostechnix1.txt and ostechnix2.txt and saves them in one file named output.txt.gz.

You can view the contents of both files (ostechnix1.txt and ostechnix2.txt) without extracting them using any one of the following commands:

$ gunzip -c output.txt.gz
$ gunzip -c output.txt
$ zcat output.txt.gz
$ zcat output.txt

For more details, refer the man pages.

$ man gzip

2. Compress and decompress files using bzip2 program

The bzip2 is very similar to gzip program, but uses different compression algorithm named the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding. The files compressed using bzip2 will end with .bz2 extension.

Like I said, the usage of bzip2 is almost same as gzip. Just replace gzip in the above examples with bzip2, gunzip with bunzip2, zcat with bzcat and so on.

To compress a file using bzip2, replacing it with compressed version, run:

$ bzip2 ostechnix.txt

If you don't want to replace the original file, use -c flag and write the output to a new file.

$ bzip2 -c ostechnix.txt > output.txt.bz2

To decompress a compressed file:

$ bzip2 -d ostechnix.txt.bz2

Or,

$ bunzip2 ostechnix.txt.bz2

To view the contents of a compressed file without decompressing it:

$ bunzip2 -c ostechnix.txt.bz2

Or,

$ bzcat ostechnix.txt.bz2

For more details, refer man pages.

$ man bzip2

Suggested read:


Summary

In this tutorial, we learned what is gzip and bzip2 programs and how to use them to compress and decompress files with some examples in GNU/Linux. In the next guide, we are going to learn how to archive files and directories in Linux.

You May Also Like

3 comments

Alex November 7, 2018 - 4:00 am

Thanks for the info.

I noticed a grammar “mistake”, it should be “The gzip is a utility” instead of “an utility”.

Reply
sk November 7, 2018 - 9:21 am

Fixed. Thank you.

Reply
Myso March 30, 2019 - 3:42 am

All these use single threads to compress. https://linux.die.net/man/1/pigz uses more threads to speed things up

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More