本文介绍了大文件远程传输场景下,rsync udr 模式的应用方法和加速效果。
rsync 是一款快速增量备份工具,相似 Unix 系统下的数据镜像备份工具——RemoteSync。rsync 远程同步支持本地复制、与其余ssh、rsync主机同步。python
其特性以下:git
一、能够镜像保存整个目录树和文件系统。github
二、能够很容易作到保持原来文件的权限、时间、软硬连接等等。shell
三、无须特殊权限便可安装。bash
四、快速:第一次同步时 rsync 会复制所有内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程当中能够实行压缩及解压缩操做,所以可使用更少的带宽。网络
rsync 能够经过 rsh 或 ssh,也能以 daemon 模式去运行,在以 daemon 方式运行时 rsync serve r会打开一个 873 端口,等待客户端去链接。链接时,rsync server 会检查口令是否相符,若经过口令查核,则能够开始进行文件传输。第一次连通完成时,会把整份文件传输一次,之后则就只需进行增量备份。运维
在平常运维中,使用 rsync 的本地模式来代替cp/scp拷贝文件、使用 rsync 的 shell 或 daemon 模式来完成用户、idc 间大量数据的交换,其实也是一种不错的选择。在此基础上,咱们为了让数据能更快的传输,可使用 rsync 的 udr 模式,现 github 上有开源代码供用户下载使用。ssh
udr 模式能够理解为是 rsync 的一个升级版本,在 rsync 服务外封装了一层服务来替代 rsync 的daemon模式,数据传输过程当中采用了 UDT 协议。工具
备注:UDT 是基于 UDP(UDP-based Data Transfer Protocol)的互联网数据传输协议。
https://github.com/LabAdvComp/UDR
测试
下载解压后执行 make 操做,会生成 udr 命令:
make -e os=XXX arch=YYY
XXX: [LINUX(default), BSD, OSX]
YYY: [AMD64(default), POWERPC, IA64, IA32]复制代码
主配置文件 udrd.conf
主配置中调用了 rsyn c 的配置文件 rsyncd.conf(目录、用户权限配置等,更多的配置详解可参考官网文档)
主配置默认启动在 /etc/udrd.conf,如在别的路径,可加-c来指定
python udrserver.py [-v] [-s] [-c configfile] start|stop|restart|foreground复制代码
在原rsync命令执行的时候,前面加udr命令便可
udr rsync hostname.com::module/path/to/file复制代码
目前测试环境有限,只在内网环境下进行了测试:
一、在稳定的内网网络环境(同网段)用两种不一样的传输方式屡次进行了对比,udr方式和常规的rsync方式速度基本至关。
二、在内网网络环境(跨网段、跨机房)用两种不一样的传输方式屡次进行了对比,udr方式要明显快于常规的rsync方式,传输大小为1G的文件进行对比:
udr服务简单来讲就是使用UDP协议把原来使用TCP协议的rysnc服务来封装起来,使用 UDP 协议来传输数据,适用于远距离的大文件传输,效果会更明显。有适合这种场景的同窗能够拿来一试。
本文首发于公众号“小米运维”, 点击查看原文。