rsync:如何排除最顶层目录中的Dotfiles?

在使用rsync在Bash下执行备份时,我试图排除顶部目录中的所有点文件和隐藏目录,但包括其他目标目录中的所有点文件和隐藏目录。 例如:

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

rsync -a --include=".includeme" --exclude=".*" . DEST rsync -a --include=".includeme" --exclude=".*" . DEST无法在子目录中复制所需的点文件,但诸如--exclude="./.*"变体也会失败。

build议? 这是否需要一个过滤规则,而不是简单 – 排除?

你应该使用锚点,而在rsync中,锚点字符是'/'。

所以在你的string应该是:

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

我通常更喜欢创build包含模式的.rsync-filter文件:

 - /.* 

那样,

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

是理想的备份命令。 过滤由-FF标志完成。

请注意,使用此方法,可以在各个子目录中拥有各种.rsyncfilter文件,并将其应用于各自的子树。 您也可以使用此方法覆盖子目录中的排除项。