Rsync 是*unix下文件同步和数据传输工具。使用“Rsync 算法”来同步本地和远程主机文件,这个算法只传送两个文件的不同部分,而不是像scp每次都传送全部,因此速度相当快。 

 一.Rsync 特性

可以镜像保存整个目录和文件系统
可以增量同步数据,文件传输效率高,传输时间短
可以保持原有的文件权限,时间等文件属性
加密传输数据,保证数据安全性
可以使用rcp,ssh 等方式来传输,也可以直接socket连接传输文件
支持匿名传输
Rsync 支持大多数的类 Unix 系统,它在windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。


二.Rsync4种应用模式

1.本地shell模式(类似cp)


      rsync -av 源参数 目标参数
    如果源参数末尾有“/” 是将源目录下的内容复制出来
    没有“/”时则将源目录复制出来

2.远程shell 模式(类似scp)

     rsync -av 源参数 user@192.168.1.41:/tmp/

     rsync -av  user@192.168.1.41:/tmp/a.txt  /opt/

3.列表模式 (类似 ls)

     rsync -a user@192.168.1.41:/tmp

     rsync -a   /opt/

4.服务器模式

   基于c/s模式,rsync服务器端 以守护进程方式永久运行,用于接受文件传输请求,客户端可以把文件发送给服务器端,也可以从服务器端请求文件

三.rsync 缺点

1.不能实时同步
2.当文件数量达到百万级以上时,客户端同步时扫描改变的文件非常耗时
3.单向同步

四.一些补充

针对不能实时同步和单向同步,有以下方案可以解决

1.配合inotify 实现实时备份

     inotify是linux 内核支持的功能,通过inofity可以监控文件系统中添加,删除,修改,移动等各种细微事件,利用这个内核接口,配合inotify-tools可以监控文件系统下文件的各种变化情况,并触发rsync同步

2.unison 双向同步
    unison基于 “rsync 算法”对两端文件进行比较,并更新到一致状态

特点:

跨平台

对内核和用户没有特殊要求
双向同步,自动更新
只要能连通的主机就可以运行,可以通过ssh 和socket方式,对宽带要求不高
支持增量同步

Rsync详细配置方法见:

http://www.52os.net/install-and-configure-rsync-to-synchronous-files.html