How to Use the ‘tar’ Command to Compress and Archive Files

The Evolution of Tape Archives

In the early days of UNIX, administrators needed a way to back up massive amounts of data onto sequential magnetic tape drives. To do this, they created the tar (Tape Archive) command.

Today, almost no one uses magnetic tapes for daily server management, but tar remains the absolute standard for bundling and compressing files in the Linux ecosystem. When you download source code for a Linux application, it almost always arrives as a .tar.gz file (affectionately called a “tarball”).

Understanding how to pack and unpack tarballs is a mandatory skill for navigating the Linux command line.

1. Archiving vs. Compressing

It is crucial to understand that tar originally did not compress data. It only “archived” it.

If you have 100 individual text files that are 1MB each, running a basic tar command will bundle them together into a single file that is exactly 100MB in size. This is useful for keeping files organized, but it doesn’t save disk space.

Modern versions of tar solve this by passing the bundled archive through a compression algorithm (like gzip) before writing it to the disk.

2. Creating a Compressed Archive (-czvf)

Suppose you have a directory called /var/www/html containing thousands of website files, and you want to compress it into a single backup file.

The standard command is:

tar -czvf website_backup.tar.gz /var/www/html

The flags are the secret to the command:

  • c (Create): Tells tar to create a new archive.
  • z (Gzip): Tells tar to compress the archive using the gzip algorithm.
  • v (Verbose): Prints the name of every file to the screen as it is compressed.
  • f (File): Tells tar that the very next word (website_backup.tar.gz) is the name of the file it should create.

3. Extracting an Archive (-xzvf)

When you download a .tar.gz file from the internet, you need to “untar” it. The command is almost identical to creating one, but you swap the c (Create) for an x (Extract).

tar -xzvf downloaded_software.tar.gz

This will decompress the file and extract its contents into your current working directory.

Extracting to a Specific Directory

If you downloaded the file to your ~/Downloads folder, but you want to extract the contents directly into /opt/software, you must use the capital -C (Change directory) flag.

tar -xzvf downloaded_software.tar.gz -C /opt/software

4. Viewing the Contents Without Extracting

Sometimes you find an old tarball on a server and you don’t know what is inside it. You shouldn’t blindly extract it, as it might overwrite your current files.

You can use the -t (List) flag to peek inside the archive without extracting a single byte.

tar -tzvf mystery_backup.tar.gz

This will print a complete directory tree of everything hidden inside the archive.

5. Modern Compression (Bzip2 and XZ)

While gzip (the z flag) is the fastest and most common compression method, it doesn’t provide the smallest file size.

If you are archiving massive log files for long-term cold storage and want the absolute smallest file size possible, use the xz algorithm (the capital J flag).

tar -cJvf cold_storage_logs.tar.xz /var/log/nginx/

(Note: XZ compression takes significantly more CPU power and time to compress, but the resulting file size is drastically smaller).

Conclusion

The tar command is the foundational packaging tool of the UNIX world. By mastering its create, extract, and list flags, administrators can efficiently compress server backups, safely distribute software packages, and manage massive directory structures with a single line of code.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.