如何使用Rsync仅忽略同名static/文件夹,同步frontend/static/
Rsync 仅忽略根目录static/并同步frontend/static/的解决方法
核心思路:利用Rsync的绝对路径匹配规则
Rsync的排除规则中,以斜杠/开头的模式会从同步的根目录开始精确匹配,不会匹配子目录下的同名路径。
具体操作
- 修改
rsync_exclude.txt文件内容为:
/static/
- 执行原有的Rsync命令即可:
rsync -av --delete --exclude-from 'rsync_exclude.txt' 你的源目录/ 目标目录/
原理说明
/static/会精确匹配同步根目录下直接存在的static/文件夹,根目录外的frontend/static/因为路径前缀是frontend/,不会被该规则匹配,因此会正常同步。- 之前用
static/会同时匹配所有路径下的static/文件夹,而./static/因为Rsync处理相对路径时的匹配逻辑问题,导致无法精准匹配根目录的static/。
备选方案(优先级低于上面的方法)
如果不想用绝对路径模式,也可以通过先包含再排除的顺序实现:
修改rsync_exclude.txt为:
+ frontend/static/ + frontend/static/** - static/
注意:Rsync的规则是从上到下匹配,先匹配到的规则生效,所以必须先写
+包含规则,再写-排除规则。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

