如何使用rsync正确匹配目录

时间:2016-05-12 22:39:59

标签: rsync

我需要将一些目录从一台机器rsync到另一台机器,但只是树的一部分。我认为最简单的解释方法是在服务器上运行tree -f(打印每个文件的完整路径),然后grep' mon 完整路径和rsynch仅匹配grep的匹配项。实际上我很乐意这样做,但我没有shell访问服务器,只有rsync。基于grep输出rsync --list-only的两步解决方案是完全可以接受的。

它实际上更简单,因为我也知道这个 mon 只显示 作为目录的后缀(层次结构非常严格),所以我试着

rsync --dry-run -vrlpt --include='*/' --include='**/*mon/' --exclude='*' --prune-empty-dirs

但这与任何事情都不相符。同样为--include='*mon/'而不是带有双星号的那个。避免--prune-empty-dirs匹配所有目录但没有文件,我认为这是我的问题。所以我尝试在排除模式之前为某些文件扩展添加包含模式(我不想这样做,因为我不想跟踪它们并且它们可能会更改),但这只是匹配所有这些文件,包括那些不在“星期一”的树木。

是的,我确实看到thisthis以及this和无数其他人,这帮助我取得了一些进展(即上面你可以看到的),但没有解决问题...

1 个答案:

答案 0 :(得分:0)

如下所示的工作(即问题是匹配mon之后的任何东西)在第二个包括:

rsync -arvm --include='*/' --include='*mon/***' --exclude='*' /path/to/source /path/to/dest