Sending and receiving large files and pictures over the internet is a headache many times. Compression and decompression tools are meant to address this problem. Lets take a quick overview of a few open source tools that are available to make our jobs simpler.
Tar is derived from 'Tape archiver' as this was initially used for archiving and storing files on magnetic tapes. It is a GNU software. It can compress a set of files (archives), extract them and manipulate those which already exist. It is useful for storing, backing up and transporting files. Tar can preserve file and directory structure while creating the archives. Files archived using tar have '.tar' extensions.
a) Creating an archive (c / --create)
tar --create --verbose --file=archive.tar file1 file2 file3
tar cvf archive.tar file1 file2 file3
b) Listing an archive ( t / --list)
tar --list archive.tar
c) Extracting an archive (x / --extract)
tar xvf archive.tar
tar xvf archive.tar --wildcards '*.c' - extracts files with only *.c extension from the archive.
d) Updating an archive ( u / --update)
tar uvf archive.tar newfile.c - updates the archive by adding newfile.c if its version is newer than the existing one.
e) Delete from an archive (--delete)
tar--delete -f archive.tar file1.c - deletes 'file1.c' from the tar ball 'archive.tar'
Refer to tar home page for its detailed usage
Gzip / Gunzip
Gzip stands for GNU zip. It is a compression utility that is commonly available in Linux operating system. Compressed files have an extension of '*.gz'
a) Compressing files
Each file gets compressed individually
This generally deletes the original files after compression. We can keep the original file by using the -c option.
gzip -c file > file.gz
We can also compress a group of files into a single file
cat file1 file2 file3 | gzip > archieve.gz
b) Checking compression ratio
Compression ratio of the compressed file(s) can be verified using the '-l' option.
gzip -l archieve.gz
c) Unzipping files
Gunzip is used for unzipping files. Here also, original files are deleted after decompression. Use the -c option to retain original files.
gunzip -c archieve.gz
Using '-d' option with gzip command has the same effect of gunzip on compressed files.
More details can be obtained from gzip home page
Bzip2 / Bunzip2
Bzip2 is also a compression tool like gzip but can compress files to smaller sizes than that is possible with other traditional tools. But the drawback is that it is slower than gzip.
a) File Compression
Generally, no options are used for compression and the files to be compressed are passed as arguments. Each file gets compressed individually and compressed files will have the extension 'bz2'.
bzip2 file1 file2 file3
Use '-k' option to keep the original files after compression / decompression.
'-d' option is used for forced decompression.
bunzip2 can decompress files with extensions bz2, bz, tbz2 and tbz. Files with tbz2 and tbz will end up with '.tar' extension after decompression.
bzip2 -dc performs the function of decompressing files to the stdout
7-zip is another open source file archiver. It uses 7z format which is a new compression format and provides high-compression ratio. Hence, it is considered to be better than the previously mentioned compression tools. It is available under Linux as p7zip package. The package includes three binaries – 7z, 7za and 7zr. Refer to the p7zip wiki for differences between these binaries. In this article, we will be using 7zr to explain the usage. Archived files will have '.7z' extension.
a) Creating an archive
7zr a archive-name.7z file-name(s) / directory-name(s)
b) Listing an archive
7zr l archive-name.7z
c) Extracting an archive
7zr e archive-name.7z
d) Updating an archive
7zr u archive-name.7z new-file
e) Deleting files from an archive
7zr d archive-name.7z file-to-be-deleted