How to exclude files in rsync?
You may find it easier to add .rsync-filter
files in your source directories, and use the -F
option.
From the man page:
-F : The -F option is a shorthand [...] for this rule:
--filter='dir-merge /.rsync-filter'
This tells rsync to look for per-directory .rsync-filter files that have been sprinkled through the hierarchy and use their rules to filter the files in the transfer.
For example: in $HOME/Documents/.rsync-filter
# you can add comments in filter files
- /another/
- /temp/
Instead of -
, you can also write the whole word exclude
.
Now you can
rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
There are several issues with your rsync command (also see manpage for rsync for detailed explanation of filter rules).
- we need an
--exclude
command each for any given pattern. - paths given need to be relative to the source path (no absolute paths).
- options need to be given before we state source and destination.
For your example the following syntax will work:
rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST
Note that if an exlude pattern ends with /
it refers to a directory. If you omit it both, files and directories with that name will be excluded. Replace it with a wildcard *
to exclude all files or directories with that string in their names.