rsync性能终极优化【Optimize rsync performance】

前言

将文件从一台计算机同步或备份到另外一台计算机的快速简便的方法是使用rsync我将介绍一般用于备份数据的命令行选项,并显示一些选项以极大地将传输速度从大约20-25 MB / s加快到90 MB / s以上!linux

rsync的简短描述

rsync协议可以有效地在计算机之间同步文件。它仅经过传输更改的文件来完成此操做,除此以外,它还尝试仅传输本地文件和远程文件之间的差别,以进一步最小化传输的数据大小。
底层数据传输使用Secure Shell或  SSH保护,这增长了另外一层计算开销来安全地加密数据,而后传输到远程服务器并再次对其解密。由于我大部分时间都在使用计量互联网链接,因此我在SSH中使用了最大可能的压缩率,这在本地和快速网络中使用rsync时会成为瓶颈。git

使用的命令行参数说明

个人默认命令行参数,带有完整rsync手册页中的描述

github

  • -a:存档模式(等于-rlptgoD):递归,将符号连接复制为符号连接,保留权限,保留修改时间,保留组,保留全部者,保留设备文件和特殊文件
  • -v:在传输过程当中增长详细信息
  • -u:跳过接收方上较新的文件
  • -r:递归到目录
  • --progress:显示传输过程当中的进度
  • --delete:从远程服务器中删除多余的文件

优化的rsync的性能

SSH的最大压缩(在个人配置中默认使用)对带宽较小的计量链接颇有帮助,在这种状况下,您能够从减小的数据量中节省时间。在本地快速网络中,这其实是瓶颈,而且在SSH命令的100%CPU使用率中体现出来。在这种快速的本地网络中,无需进行任何压缩便可直接传输文件,由于压缩和解压缩会比仅传输普通文件花费更长的时间。

为此,可使用如下选项来加速本地网络中的数据传输:

安全

  • -T:在目标上的可行伪tty分配
  • -c aes128-ctr:选择一个较弱但较快的SSH加密。其余人指定arcfour,这将须要在目标主机上手动修改ssh_config。这并不是老是可能的,而且这种加密对我来讲效果很好。
  • -x:禁用X11转发
  • -o Compression = no:禁用上述SSH压缩瓶颈
  • -z 选项也可能会下降性能,若是不经过慢速连接传输数据,则不该该使用它
  • --inplace 原地替换,即不会生成临时文件, 不会有mv tmp target。
  • --exclude-from或相似的排除您可能不须要的文件将减小时间,但不会增长传输速度。
  • -S--sparse:将空序列变成稀疏块
  • --partial或者-P--partial --progress:保存任何部分传输的文件以供未来恢复。注意:文件不会有临时名称,所以请确保在整个副本完成以前,没有其余指望使用目标的文件。
  • --no-whole-file这样须要从新发送的任何内容都会使用增量传输。读取部分传输的文件的一半一般比从新写入要快得多。
  • --inplace 避免文件复制(但前提是在整个传输完成以前没有任何内容读取目标)
  • 为传输的不一样部分运行rsync的多个实例可能会颇有帮助
  • -u 只传输增量文件


完整的命令将foo文件夹备份 目标主机desthost的远程文件夹而后:服务器

export RSYNC_RSH ="ssh -T -c aes128-ctr -o Compression = no -x"网络

rsync -avur --progress --delete foo desthost::bar ssh

使用此命令,能够将传输速率从大约20-25 MB / s增长到90 MB/s以上!性能

 

 

参考说明:

1. 稀疏文件是一种计算机文件,它能尝试在文件内容大多为空时更有效率地使用文件系统的空间。它的原理是以简短的信息表示空数据块,而不是在在磁盘上占用实际空间来存储空数据块。只有真实的数据块会按原样写入磁盘。 在读取稀疏文件时,文件系统会按元数据在运行时将这些透明转换为“真实”的数据块,即填充为零。应用程序不会察觉这个转换。优化

相关文章
相关标签/搜索