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

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

什么是 rsync?

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

其特性如下:

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

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

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

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

rsync 可以通过 rsh 或 ssh,也能以 daemon 模式去运行,在以 daemon 方式运行时 rsync serve r会打开一个 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

主配置中调用了 rsyn c  的配置文件 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 协议来传输数据,适用于远距离的大文件传输,效果会更明显。有适合这种场景的同学可以拿来一试。

本文首发于公众号“小米运维”,点击查看原文