8

When performing backups under Bash with rsync, I'm trying to exclude all dotfiles and hidden directories in the top directory, but not those in otherwise targeted directories. For example:

/copyme.c  
/.dontcopythisfile  
/.dontcopythisdirectory/or_its_contents  
/directory/.butcopymetoo

rsync -a --include=".includeme" --exclude=".*" . DEST fails to copy the desired dotfiles in subdirectories, but variations such as --exclude="./.*" also fail.

Suggestions? Does this require a filter rule as opposed to the simpler --exclude?

migrated from stackoverflow.com Sep 11 '11 at 8:34

This question came from our site for professional and enthusiast programmers.

12

You should use anchor, and in rsync the anchor character is '/'.

So in your string should be:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
0

I usually prefer to create .rsync-filter files containing the patterns:

- /.*

That way,

rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/

is the ideal backup command. The filtering is done by the -FF flags.

Note that using this method, you can have various .rsync-filter files in various subdirectories, applying to their respective subtrees. You can override exclusions in subdirectories as well, using this method.

Your Answer

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