When using filter or exclude files ensure each entry has no spaces at the end of it or it will not match correctly e.g.
Use two -v options on the command line to get output about what was skipped or included and why.
Use the -n option to simulate what rsync will do without actually copying any files.
Initially I started by using exclude options on the command line for the big directories that I didn’t want uploaded, things like my Music files etc. The command line ended up something like:-
rsync -n -v -a -z --exclude=Music/ --exclude=downloads/ --exclude=".*" --exclude=macky/ --exclude=XBMC/ -r /home/simon/ email@example.com:blahblah
I decided it would make more sense to use an exclude file or filter file rather than an ever expanding command line so the I changed the command to be
rsync -v -a -z --filter='merge /home/simon/rsync_exclude' /home/simon/ firstname.lastname@example.org:blahblah
I then created the file
/home/simon/rsync_exclude by cutting and pasting from the old command line and editing the file to put one entry per line with the – sign in front to indicate it should not be included:-
However when I ran the rsync command with the filter file it started to copy up all my Music etc. after much fiddling and use of the very helpful -n option to just simulate what happening and -v -v to show what was being selected I discovered the problem.
In spliting the lines in my exclude file I had left a space at the end of each line and rsync was doing a literal match and so looking for something that matched “Music/[space]” and not finding anything.
So make sure any filter or exclude files don’t have any spaces at the end of the line.
The -n option for rsync is very useful it just simulates what rsync would do if you ran it for real. Also if you run rsync with -v -v ( yes two -v options ) you get detailed output about what is skipped etc.
rsync -n -v -v blah blah
building file list ...
[sender] hiding directory .Skype because of pattern /.*
[sender] hiding directory .kchmviewer because of pattern /.*
[sender] hiding directory .gnupg because of pattern /.*
[sender] hiding file .gtk-bookmarks because of pattern /.*
[sender] hiding file .profile because of pattern /.*
[sender] hiding file .dmrc because of pattern /.*