rsync udr——远程大文件传输加速

来自:小米运维(微信号:MI-SRE),作者:SRE

本文介绍了大文件远程传输场景下,rsync udr模式的应用方法和加速效果。

什么是rsync?

rsync是一款快速增量备份工具,类似Unix系统下的数据镜像备份工具——RemoteSync。rsync远程同步支持本地复制、与其他ssh、rsync主机同步。

其特性如下:

1、可以镜像保存整个目录树和文件系统。

2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。

3、无须特殊权限即可安装。

4、快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

rsync可以通过rsh或ssh,也能以daemon模式去运行,在以daemon方式运行时rsync server会打开一个873端口,等待客户端去连接。连接时,rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。

在日常运维中,使用rsync的本地模式来代替cp/scp拷贝文件、使用rsync的shell或daemon模式来完成用户、idc间大量数据的交换,其实也是一种不错的选择。在此基础上,我们为了让数据能更快的传输,可以使用rsync的udr模式,现github上有开源代码供用户下载使用。

udr模式可以理解为是rsync的一个升级版本,在rsync服务外封装了一层服务来替代rsync的daemon模式,数据传输过程中采用了UDT协议。

备注:UDT是基于UDP(UDP-based Data Transfer Protocol)的互联网数据传输协议。

如何使用rsync的udr模式

1、下载地址

https://github.com/LabAdvComp/UDR

2、安装

下载解压后执行make操作,会生成udr命令:

make -e os=XXX arch=YYY 
XXX: [LINUX(default), BSD, OSX]
YYY: [AMD64(default), POWERPC, IA64, IA32]

3、配置

主配置文件   udrd.conf

主配置中调用了rsync的配置文件rsyncd.conf(目录、用户权限配置等,更多的配置详解可参考官网文档)

4、启动

主配置默认启动在/etc/udrd.conf,如在别的路径,可加-c来指定

python udrserver.py [-v] [-s] [-c configfile] start|stop|restart|foreground

5、使用

在原rsync命令执行的时候,前面加udr命令即可

udr rsync hostname.com::module/path/to/file

测试对比

目前测试环境有限,只在内网环境下进行了测试:

1、在稳定的内网网络环境(同网段)用两种不同的传输方式多次进行了对比,udr方式和常规的rsync方式速度基本相当。

2、在内网网络环境(跨网段、跨机房)用两种不同的传输方式多次进行了对比,udr方式要明显快于常规的rsync方式,传输大小为1G的文件进行对比:


小结


udr服务简单来说就是使用UDP协议把原来使用TCP协议的rysnc服务来封装起来,使用UDP协议来传输数据,适用于远距离的大文件传输,效果会更明显。有适合这种场景的同学可以拿来一试。

推荐↓↓↓
Linux学习
上一篇:Linux里隐藏的计算器,你知道它的奥秘吗? 下一篇:轻松搞定crontab和quartz表达式