linux命令之rsync同步速度分析


rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。

它的特性如下:
1)可以镜像保存整个目录树和文件系统。
2)可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3)无须特殊权限即可安装。
4)快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
5)安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6)支持匿名传输,以方便进行网站镜象。

一下是我的一个rsync脚本,基本满足大部分需求:

 

rsync --compress --recursive --times --perms --owner --group --links  --exclude=smarty/templates_c/  --timeout=30 [path] [user]@[ip]:[path]
echo '----------------------------------------------------'
echo "complete rsync [path] to [user]@[ip]:[path]"

参数解析:

 

-z, --compress 对备份的文件在传输时进行压缩处理

-r, --recursive 对子目录以递归模式处理

-t, --times 保持文件时间信息

-p, --perms 保持文件权限

-o, --owner 保持文件属主信息

-g, --group 保持文件属组信息

-l, --links 保留软链结

--exclude=PATTERN 指定排除不需要传输的文件模式

--timeout=TIME IP超时时间,单位为秒

rsync速度测试

我的同步目录大小是88M,执行命令

 

building file list ... done

sent 637987 bytes  received 20 bytes  425338.00 bytes/sec
total size is 88738094  speedup is 139.09

 

可以看到,仅仅传输了637kb的数据而已,而不是实际的88M数据,原因是rsync并不是将所有文件进行同步。

相关内容