rsync的配置方法请参考(请先阅读这篇文章)https://blog.whsir.com/post-1501.html
现在想只同步某些目录或文件,这里就用到了--include和--exclude参数,--include是只同步某些目录或文件,但是必须和--exclude配合使用。
只需要在原来客户端的参数上做一些更改,原来客户端命令如下:
1 |
rsync --size-only -azvP --password-file=/opt/mima whsir@192.168.0.10::www /home/wwwroot |
例如:现在我只想同步服务端/data/www/js/目录下所有文件,其他的目录或者文件我都不想同步,更改后的参数如下
1 |
rsync --size-only -azvP --include=js/ --exclude=/* --password-file=/opt/mima whsir@192.168.0.10::www /home/wwwroot |
好了,上面的参数已经实现了我的目的,只同步js目录,那么又有一个新问题出现了,如果我想要只同步多个目录怎么办?我要写多个--include吗?当然如果不嫌麻烦也是可以的,不过我这里再介绍一个参数--include-frome,我可以把要同步的目录全部写到一个文件中,然后通过--include-frome来读取这个文件,参数如下:
1 |
rsync --size-only -azvP --include-from="/etc/include" --exclude=/* --password-file=/opt/mima whsir@192.168.0.10::www /home/wwwroot |
1 2 3 |
cat /etc/include js/ css/ |
这样就实现了只同步js和css两个目录
*号模糊匹配同步
例如:现在只想同步服务器/data/www/js/下nc1目录里面的nc.log1、nc.log2、nc.log3...nc.log20、文件。
1 |
rsync --size-only -azvP --include=nc1/ --include=nc1/nc.log* --exclude=/* --password-file=/opt/mima whsir@192.168.0.10::www /home/wwwroot |
同样用--exclude-from参数也是可以的
例如:现在想同步服务器/data/www/js/下nc1、nc2、nc3...nc20每个目录里面的nc.log1、nc.log2、nc.log3...nc.log20、文件。我这里假设nc*是唯一的,不存在匹配其他内容。
1 |
rsync --size-only -azvP --exclude-from=/etc/include --password-file=/opt/mima whsir@192.168.0.10::www /home/wwwroot |
1 2 3 4 |
cat /etc/include + /nc*/ + /nc*/nc.log* - * |
原文链接:rsync设置只同步某些目录或文件,转载请注明来源!