rsync增量传输大文件优化技巧

作者:简简单单 2015-11-24

RSync服务器配置


确保安装了rsync

配置/etc/rsyncd.conf,一般情况下安装了rsync不会自动创建rsyncd.conf,配置如下

 代码如下 复制代码

# Rsync configuration file
secrets file = /etc/rsyncd.secrets #认证用户名和密码文件的名称和位置
motd file = /etc/rsyncd.motd #欢迎文件,可自己编辑
read>list = yes
uid = root
gid = root
use chroot = no
max connections = 5
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
# Remote sync configuration module
[testsync]
comment = testsync directory
path = /home/chijianqiang
auth users = rsync

生成密码文件

 代码如下 复制代码

echo "rsync:password" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

启动rsync

 代码如下 复制代码

rsync --daemon --config=/etc/rsyncd.conf

从客户端同步文件

 代码如下 复制代码

rsync -avz --delete /clientfilepath username@192.168.xx.xx:port::modelname --password-file=/etc/rsyncd.secrets

rsync -vzrtopg --progress rsync@10.11.3.3::testsync /home/chjq
rsync -vzrtopg --delete --progress rsync@10.11.3.3::testsync /home/chjq

增加--delete参数会把原有chjq目录下的文件删除以保持客户端和服务器端文件系统完全一致,慎用

rsync增量传输大文件优化技巧

问题

rsync用来同步数据非常的好用,特别是增量同步。但是有一种情况如果不增加特定的参数就不是很好用了。比如你要同步多个几十个G的文件,然后网络突然断开了一下,这时候你重新启动增量同步。但是发现等了好久都没有进行数据传输,倒是机器的IO一直居高不下。
原因

rsync具体的增量同步算法不太清楚。根据它的表现来看,可能在增量同步已经存在的一个文件时,会校验已传输部分数据是否已源文件一致,校验完成才继续增量同步这个文件剩下的数据。所以如果对一个大文件以这样的算法来增量同步是非常花时间并且占用IO资源的。
方法

半夜花了一个多小时查看了rsync的文档,发现有一个参数能快速恢复大文件的增量同步,–append。设置–append参数会在增量同步时计算文件大小并直接追加新的数据到文件,这样就省了费IO校验的过程。不过这个参数最好只在源文件和目标文件都不会更改的时候使用比较安全,比如备份的文件。

相关文章

精彩推荐