如何正确匹配目录与 rsync
Posted
技术标签:
【中文标题】如何正确匹配目录与 rsync【英文标题】:How to properly match directories with rsync 【发布时间】:2016-09-08 23:27:22 【问题描述】:我需要将一些目录从一台机器同步到另一台机器,但只是树的一部分。我认为解释它的最简单方法是在服务器上运行tree -f
(打印每个文件的完整路径),然后在完整路径中运行grep
'ing mon 和rsynch
'ing 仅匹配 grep
。实际上我很乐意这样做,但我没有对服务器的 shell 访问权限,只有rsync
。基于grep
ing 输出rsync --list-only
的两步解决方案是完全可以接受的。
其实比较简单,因为我也知道这个mononly作为目录的后缀出现(层次结构相当僵化),所以我试着做 p>
rsync --dry-run -vrlpt --include='*/' --include='**/*mon/' --exclude='*' --prune-empty-dirs
但那不匹配任何东西。 --include='*mon/'
同上,而不是带有双星号的那个。避免 --prune-empty-dirs
匹配所有目录但没有文件,我认为这是我的问题。因此,我尝试在排除模式之前为某些文件扩展名添加包含模式(我不想这样做,因为我不想跟踪它们,它们可能会改变),但这只是匹配所有这些文件,包括那些不在“mon”树中的。
是的,我确实看到了 this 和 this 和 this 以及无数其他人,这帮助我取得了一些进展(即您在上面看到的),但没有解决问题......
【问题讨论】:
【参考方案1】:在第二个包括中,类似以下的内容(即问题是匹配 mon 之后的任何内容):
rsync -arvm --include='*/' --include='*mon/***' --exclude='*' /path/to/source
/path/to/dest
【讨论】:
以上是关于如何正确匹配目录与 rsync的主要内容,如果未能解决你的问题,请参考以下文章