You are providing absolute paths in your exclude list.
With rsync, all exclude (or include!) paths beginning with
/ are are anchored to the "root of transfer".
The root of transfer in this case is
/home/chris. If you did:
rsync -Paz --exclude-from 'rsync-exclude.txt' / email@example.com:
...then your exclusions should work (but you'd be copying everything else on that filesystem!).
But since you're just trying to sync your home directory, and there is no subdirectory of
rsync finds nothing that matches.
So try removing the
/home/chris parts from your
Actually, you should just need a single line in the file:
Note that if you don't specify the leading
/, and you happen to have other directories named
"Downloads", those would also be excluded. I'm assuming you only want to exclude your "top-level" (relative to the source directory, aka the "root of transfer")
Downloads directory, so you'll want the leading
THE EASIEST WAY (to exclude only a few paths)
If you only need to exclude one directory, just do this (avoiding a separate file):
rsync -Paz --exclude /Downloads /home/chris/ firstname.lastname@example.org:LinuxHome
You can also chain together
--exclude tags, like so:
rsync -Paz --exclude /Downloads --exclude '/Something Else' --exclude .hiddenFile /home/chris/ email@example.com:LinuxHome
Note that since there's no slash, that one will exclude
.hiddenFile from any every directory it copies!
But if you have more than a few exclusions, you're better off with
--exclude-from and a file.
I see that you got it right, but those new to rsync should note the slash at the end of
To quote the
rsync man page, "You can think of a trailing / on a source as meaning 'copy the contents of this directory' as opposed to 'copy the directory by name'."
So if you left off that trailing slash, you would end up with a directory called
chris within the target directory, containing everything from
/home/chris (except the original
Downloads directory, of course!).