如何正确匹配目录与 rsync

Posted

技术标签:

【中文标题】如何正确匹配目录与 rsync【英文标题】:How to properly match directories with rsync 【发布时间】:2016-09-08 23:27:22 【问题描述】:

我需要将一些目录从一台机器同步到另一台机器,但只是树的一部分。我认为解释它的最简单方法是在服务器上运行tree -f(打印每个文件的完整路径),然后在完整路径中运行grep'ing monrsynch'ing 仅匹配 grep。实际上我很乐意这样做,但我没有对服务器的 shell 访问权限,只有rsync。基于greping 输出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的主要内容,如果未能解决你的问题,请参考以下文章