Friday, May 3, 2024
 Popular · Latest · Hot · Upcoming
96
rated 0 times [  96] [ 0]  / answers: 1 / hits: 115437  / 2 Years ago, wed, january 12, 2022, 6:30:52

I am trying to backup my home folder on my NAS drive. I am giving this:



rsync -Paz --exclude-from 'rsync-exclude.txt' /home/chris/ [email protected]:LinuxHome


where rsync-exclude.txt has this content:



/home/chris/Downloads/*
/home/chris/Downloads/
/home/chris/Downloads/*.*


and it is in the same folder I execute rsync (home folder).



However the rsync tries to copy this folder, too.



What am I doing wrong?


More From » rsync

 Answers
7

You are providing absolute paths in your exclude list.


With rsync, all exclude (or include!) paths beginning with / 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 protected]:`

…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 /home/chris named "home/chris/Downloads", rsync finds nothing that matches.


So try removing the /home/chris parts from your rsync-exclude.txt file.


Actually, you should just need a single line in the file:


/Downloads

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/ [email protected]:LinuxHome

You can also chain together --exclude tags, like so:


rsync -Paz --exclude /Downloads --exclude '/Pictures' --exclude .cache 
/home/chris/ [email protected]:LinuxHome

Note that in this example, since .cache has no leading slash, rsync will exclude any file or directory named .cache from every directory it transfers. You can leave out the backslash (), as long as you type everything on a single line. It has nothing to do with rsync.


If you have more than a few exclusions, you're better off with --exclude-from and a file.


Note


I see that you got it right, but those new to rsync should note the slash at the end of /home/chris/


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!).


[#29293] Thursday, January 13, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
hamostic

Total Points: 403
Total Questions: 142
Total Answers: 112

Location: Iceland
Member since Sat, Sep 17, 2022
2 Years ago
;