我需要将一些目录从一台机器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
匹配所有目录但没有文件,我认为这是我的问题。所以我尝试在排除模式之前为某些文件扩展添加包含模式(我不想这样做,因为我不想跟踪它们并且它们可能会更改),但这只是匹配所有这些文件,包括那些不在“星期一”的树木。
是的,我确实看到this和this以及this和无数其他人,这帮助我取得了一些进展(即上面你可以看到的),但没有解决问题...
答案 0 :(得分:0)
如下所示的工作(即问题是匹配mon之后的任何东西)在第二个包括:
rsync -arvm --include='*/' --include='*mon/***' --exclude='*' /path/to/source
/path/to/dest