如何包含在 rsync 中排除的文件

Ric*_*ich 21 rsync

我正在尝试设置一个排除所有.*文件的 rsync,.htaccess但不幸的是,这不起作用:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式排除一般排除规则?

Gil*_*il' 33

第一个匹配规则适用,因此.htaccess在排除之前包含.*

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir
Run Code Online (Sandbox Code Playgroud)

.htaccess在每个级别都复制。我不知道你的意图是什么./.htaccess;如果您只想匹配副本根目录下的文件,请以/. 如果你只想要 root .htaccess,你不能只使用--include='/.htaccess' --exclude='.*',因为非 root 规则在这里实际上优先,你需要做一些更复杂的事情:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir
Run Code Online (Sandbox Code Playgroud)

进一步阅读:rsync 过滤器的基本原理