如何加速小文件的rsync

Noo*_*les 17 rsync

我正在尝试使用以下命令将数千个小文件从一台服务器传输到另一台服务器:

rsync -zr --delete /home/user/ user@10.1.1.1::backup

目前转移需要很长时间(我没有计时)。有没有办法让它更快?我应该使用其他工具吗?我应该通过 ssh 使用 rsync 而不是使用 rsync 协议吗?

Mar*_*ner 15

您需要确定瓶颈。它不是 rsync。这可能不是您的网络带宽。正如@Zoredache 所暗示的那样,很可能是所有stat()调用产生的大量 iops 。任何同步工具都需要统计文件。在同步运行时iostat进行验证。

所以问题就变成了;我如何优化统计?两个简单的答案:

  1. 获得更快的磁盘子系统(如果需要,在两台主机上)和
  2. 调整您的文件系统(例如,使用 ext3 挂载noatime并添加一个dir_index)。

如果碰巧不是您的磁盘 iops 是限制,那么您可以尝试将 dir 树拆分为多个不同的树并运行多个 rsync。


unu*_*tbu 7

压缩对于小文件(比如小于 100 字节)不是很有用。对于小文件,有时压缩版本可能比原始文件更大。尝试rsync不带-z标志的命令。

ssh有利于安全,但不会使传输更快。事实上,由于需要加密/解密,它会使传输速度变慢。

rsync第一次运行时可能看起来并不快,因为要传输大量数据。但是,如果您计划定期运行此命令,则后续运行可能会快得多,因为rsync不传输未更改的文件是明智之举。


小智 5

如果涉及 ext3 或 ext4 文件系统,请检查两者是否都启用了dir_index 功能!在我的例子中,rsync 吞吐量增加了三倍。

请参阅我的答案中的详细信息: https: //serverfault.com/a/759421/80414