rsync:如何仅在最顶层目录中排除点文件?

rsync:如何仅在最顶层目录中排除点文件?

在 Bash 下使用 执行备份时rsync,我尝试排除顶级目录中的所有点文件和隐藏目录,但是不是位于其他目标目录中的目录。例如:

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

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

有什么建议吗?这是否需要过滤规则,而不是更简单的规则--exclude

答案1

您应该使用锚点,在 rsync 中锚点字符是“/”。

因此您的字符串应该是:

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

答案2

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

- /.*

那样,

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

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

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

答案3

rsync -a --include="/*/.*" --exclude="/.*" --exclude="node_modules" ./ ../out 这对我有用,只需确保输入目录是当前工作的目录即可。

相关内容