rsync远程同步:rsync是以文件名来区分的文件是否已经同步,文件同步之后进程会自动中断
rync的
核心算法介绍:
假定在名为α和β的两台计算机之间同步相似的文件 A 与 B ,其中α对文件 A 拥有访问权,β对文件 B 拥有访问权。并且假定主机α与β之间的网络带宽很小。那么 rsync 算法将通过下面的五个步骤来完成:
1. β将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。
2. β对每一个分割好的数据块执行两种校验:一种是 32 位的滚动弱校验,另一种是 128 位的 MD4 强校验。
3. β将这些校验结果发给α。
4. α通过搜索文件 A 的所有大小为 S 的数据块 ( 偏移量可以任选,不一定非要是 S 的倍数 ) ,来寻找与文件 B 的某一块有着相同的弱校验码和强校验码的数据块。
这项工作可以借助滚动校验的特性很快完成。
5. α发给β一串指令来生成文件 A 在β上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。
小结
rsync就是会同步我们指定的两端目录之间的数据,这个数据可以是特殊的数据。同步之前就先进行两端的数据的比对,只会同步两者之间不同的部分,并保留文件原本的属性。
并且支持匿名的方式进行同步传输。所以rsync在备份,同步上就会较为快速
1.需要两台主机实现免密登录
2.rsync的同步参数
a 归档传输。保留文件的原始属性
z 传输时压缩文件,可能会占用更多的资源
--delete 需要指定同步目录时,才有用 /目录 --delete参数要放在源目录和目标目录前,并且两个目录结构一定要一致!不能使用./*
--exclude 过滤单个文件不同步
--exclude-from=文件 过滤该文件内容中指定的的路径
--bwlimit=1000 K Bytes/s
-e "ssh -p30000" 指定端口
--append 追加文件内容发,可确保文件的inode信息不会更变
只同步/rsync目录下的 ".sh"文件 --exclude 后面加过滤的条件
rsync -av --exclude "*.sh" /rsync/ 192.168.191.121:/rsync
同步时删除目的服务器中源服务器上不存在的文件
rsync -av --delete /rysnc/或者/rsync 192.168.191.121:/rsync
在同步源文件是通过匹配确认的情况下/rsync/*.sh ,目前删除功能还没有实现
转载于:https://blog.51cto.com/12182612/2357245