54

I'm using rsync to recursively sync a remote folder tree that looks something like this:

/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2

I don't know what the folder tree will look like and it will change over time. So what I want to be able to do is recursively rsync the above but exclude the folder "cache" and any sub folders it contains:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

Any suggestions?

1
79

You want the --exclude flag. For example, a local rsync:

rsync -a --exclude cache/ src_folder/ target_folder/

It really is that simple -- that exclude rule will match a directory named "cache" anywhere in your tree.

For more information, look for "--exclude" and the "FILTER RULES" section on the rsync man page:

http://www.samba.org/ftp/rsync/rsync.html

5
  • 1
    Doh!!. Thanks it is the simple answers that I like best :-)
    – TheEdge
    Jan 16 '11 at 0:38
  • 2
    What about not anywhere in the tree? Like, only exclude a/cache. UPD See this answer
    – x-yuri
    Nov 12 '15 at 15:50
  • 2
    Also --exclude /cache/ (with the leading /) will only exclude a/cache directory, not any directory named cache. Dec 19 '15 at 13:07
  • Why a/ b/ in the above command line, what does it mean?
    – Danijel
    Dec 24 '15 at 9:13
  • 1
    @Danijel: a/ is the directory we're syncing (or copying) from; b/ is the directory we're syncing into.
    – Jander
    Dec 25 '15 at 4:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.