Rsync is a useful Linux command-line tool that syncs and copies files and directories. You can use the tool to synchronize data locally between directories and drives, or between two remote machines.
The basic rsync commands in Linux sync everything from a location you specify. In many backup scenarios, you may want to exclude specific files, directories, or file types.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform rsync command related queries.
In this context, we shall look into how to exclude files using the rsync command.
Below are the different ways to exclude files and directories using the rsync command.
We exclude a specific file by passing the relative path to the file to the –exclude option.
In the below example the file src_directory/file.txt will not be transferred:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
Excluding a specific directory is the same as excluding a file. We just need to pass the relative path to the directory to the –exclude option.
rsync -a --exclude 'dir1' src_directory/ dst_directory/
However, if we wish to exclude only the directory content but not the directory itself then we use dir1/* instead of dir1:
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
To exclude multiple files or directories, we simply specify –exclude options multiple times.
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
We can also specify –exclude option once and can list the files and directories we want to exclude in curly braces {} separated by a comma as shown below:
rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/
In case, if the number of the files and/or directories we want to exclude is large then we specify the files and directories in a file and pass the file to the –exclude-from option. Here is the command in which exclude-file.txt is the file where we have placed all the files and directories we wish to exclude.
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
exclude-file.txt
file1.txt
dir1/*
dir2
Using rsync we can also exclude files and directories based on a pattern that matches the file or directory name.
For example, to exclude all .jpg files, we run the below command.
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/
But if we wish to exclude all other files and directories except the files ending with .jpg then here is the command for it.
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/
This article will guide you on easily exclude #files and #directories using the #rsync #command.
The --exclude option with the rsync command uses relative paths to the source #directory. Append the --exclude option to the rsync command, followed by the relative path to a directory or file(s).
The basic syntax for the rsync exclude option looks like this:
rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/
Replace source/ with the directory name you want to use as a source for data transfer to another location.
Replace destination/ with the directory name rsync will use as the target location for your data. If the directory does not exist, rsync creates one for you and transfers the files to that directory.