Skip to main content
Tips

Exclude Files and Directories While Creating Tar File

Don't want all the files in your tarball? Here's how to exclude files and folders while creating tar archive file.

Sagar Sharma

The tar command is used for creating archive files from various files and folders.

It's quite simple when you have all the required files in one place. But what if you want to put some files or folders in the tar file and exclude some?

One way would be to copy those required files into a new directory and then proceed with the standard procedure, but it is not an efficient way.

Instead, you can tell the tar command to exclude the undesired files in this manner:

tar --exclude="File_to_exclude" [options] [archive_name] [path]

By the way, that's not the only way to do it. Let me show you a couple of methods here.

But before I jump to the guide, I'd like to show you the directory containing multiple files and sub-directories which I'm going to utilize in this guide:

use tree command in linux

Now, let's proceed with the first method.

Method 1.  Using -exclude option

To use the -exclude option, you'd need to follow the given command syntax:

tar --exclude="File_to_exclude" [options] [archive_name] [path]

For example, I'll be creating a tarball named IHateC excluding HelloWorld.c file:

tar --exclude='HelloWorld.c' -zcvf IHateC.tar.gz .
exclude files while creating tar files in linux using --exclude option

First, let me break down the used options here:

  • z uses the gzip utility to compress files in the archive.
  • c is responsible for creating a new archive file.
  • f allows users to specify the name of the new archive.
  • v (verbose) gets us a list of processed files and directories to create archive files.

And the . used at the end of the command indicates I want to utilize the current working directory.

To check the contents of the tar file, you can use the tar command with the -tf option:

tar -tf IHateC.tar.gz
list contents of tar file in linux

but what about excluding multiple files and directories? Here you go.

Excluding multiple files and directories

To exclude multiple files and directories, you can use the chain of --exclude.

For example, I'll disclude Bash.sh and the subdirectory named Sub-Directory-1:

tar --exclude='Bash.sh' --exclude='Sub-Directory-1' -zcvf NoDir.tar.gz .
exclude multiple files and directories while creating tar file in linux

But this command can get too long if you're supposed to exclude various files. And if they have the same extension, things can get a lot easier!

Use file extension to exclude files

You just have to pair the file extension with the --exclude and it will get your job done.

For example, I want to exclude every .mp3 file while creating tarball, then I'd have to follow the given command:

tar --exclude='*.mp3' -zcvf NoMp3.tar.gz .

Method 2. Using a text file to exclude files and directories

In this method, I'll be creating a text file containing the names of files and directories that I want to exclude.

So I made a text file containing 3 filenames that I want to exclude named exclude.txt :

list contents of file using cat command in linux

So now I only have to use that text file to exclude files:

tar -zcvf NewFile.tar.gz --exclude-from="exclude.txt" .
use text file to exclude multiple files and directories while creating tar file in linux

And that's it!

Final Words

This was my take on how you can exclude files and directories while creating tar files in the easiest way possible.

And if you have any queries, you're welcome to extract them in the comments!

Sagar Sharma