一、背景介绍
1)公司在公网有服务器(ip:x.x.x.206)一台,作为rsync服务器端,配置有一个rysnc模块(cnbjs)
2)本地端有两个目录定期上传到x.x.x.206::mod中,命令示意详情如下:
rsync -avz --delete /home/xml_root/uploads bjsrsync@x.x.x.206::cnbjs --password-file=/etc/rsync.password
rsync -avz --delete /home/xml_root/www bjsrsync@x.x.x.206::cnbjs --password-file=/etc/rsync.password
二、需求与解决办法
1、不同步大于100m的文件
解决办法:增加过滤参数--max-size='100M'
2、不同步‘bak与back的备份文件
解决办法:增加过滤参数 --exclude '*\.bak' --exclude '*\.back' --exclude 'back',此方法也可屏蔽目录
2、将/home/xml_root/uploads同步目录调整为/home/xml_root/uploads/dst 【本文重点】
错误的办法:修改以下脚本,并执行
rsync -avz --delete /home/xml_root/uploads/dst bjsrsync@x.x.x.206::cnbjs --password-file=/etc/rsync.password
结果:cnbjs模块内的数据只剩下/home/xml_root/uploads/dst目录下的数据
正确的办法:在rsync服务器端增加一个dst模块(模块指向你想要的地方),两个同步目录各自使用自己的rsync模块
rsync -avz --delete /home/xml_root/uploads/dst bjsrsync@x.x.x.206::dst --password-file=/etc/rsync.password
原因分析:经过反复测试发现以下两个脚本会有很大的不同
rsync -avz --delete /home/xml_root/uploads bjsrsync@x.x.x.206::cnbjs --password-file=/etc/rsync.password
意思是:将uploads目录中的文件同步到cnbjs模块指向目录下的uploads目录中;
rsync -avz --delete /home/xml_root/uploads/ bjsrsync@x.x.x.206::cnbjs --password-file=/etc/rsync.password
意思是:将uploads目录覆盖cnbjs指向的目录
另外,需要说明的是,由于没有远端服务器的管理权限,才不得不这么搞。且最终还是想办法去修改服务器端实现此需求的
阅读(1615) | 评论(0) | 转发(0) |