If you want to exclude files from being transferred over the network using rsync, there are a few ways to do so. The simplest way is to use the –exclude option: rsync -av –exclude=/home/user/Desktop/* /tmp/rsync-excluded This will exclude all files from /home/user/Desktop from being transferred to /tmp/rsync-excluded. You can also use the exclusion list file. If you create a file called exclusion.txt in the same directory as your rsync configuration file (usually ~/.rsyncd), then rsync will read this file and use its contents as the exclusion list. For example, if you wanted to exclude all files except for those in the current directory and its subdirectories, you could use this command: rsync -av –exclude=/home/user/. exclusion.txt /tmp/rsync-excluded ..


Rsync is one of the most useful utilities for a server administrator, but it syncs everything by default, which can be annoying if your application creates a lot of temporary files. Here’s how to exclude files when using rsync.

Excluding from a List in a File

This is the ideal method for excluding files and folders, since you can always edit the list and tweak things if necessary. Here is the syntax:

The tricky thing with rsync is that you need to use a relative path when you are trying to exclude things, because when it tries to match the exclusions it won’t use the first part of the path for the match… it’s weird.

Say, for example, you are trying to backup /data/web/ and send it to another server, so you use a command like rsync -a /data/web/ user@server:/backups/data/web/ to make it happen… but you’d really like to skip syncing the /data/web/cache/ folder. When rsync goes to check your exclusion list for each item that it syncs, it won’t check /data/web/cache/ since your original rsync command is based in the /data/web/ folder. It’ll just check “cache/” against the list. So you’ll need to put “cache” into the list, not the full path. Example:

Now to exclude /data/web/cache and /data/web/temp from rsync using this command, we’d remove the /data/web/ portion of the path and the /data/exclusions file would simply contain this:

You’ll note that I added the * into the path, to make sure that it matches anything that starts with “cache” at the beginning. You can use this star pattern for more useful reasons if you wanted — say you want to exclude all .txt files from being synced. You’d start the pattern with the star to make sure that always matches, and add this:

That would ensure that those types of files are skipped during a sync. It’s pretty simple beyond that.

Excluding a Single Item

This technique is much less useful, but you can use it on the fly if you need to. If you are setting up a script to use rsync, which  you usually are, you should take the extra minute to exclude from a file list instead to make future maintenance easier.  The syntax is very similar:

The same relative path should apply here as above.