我通常使用rsync的-z选项在Internet上传输文件时启用压缩。 但是,如果我在自己的(闲置)千兆位局域网上,我还想压缩吗? 还是没有它会更快? 这取决于什么因素? (我还没有做任何基准)。
所以基本上,压缩+传输+解压缩,还是传输未压缩更快?
如果你的networking连接速度很慢,压缩显然是更好的…但是如果一切都在千兆以太网上运行,怎么样?
在rsync传输期间,你是CPU绑定的,还是你的链路饱和。
我经常这样做,在服务器之间迁移数据,并在不可能的长时间内传输数据。
简短的答案是testing您的具体数据…这是很容易做到的。 尝试closures压缩的LAN传输,然后尝试使用压缩…
根据我在几个环境中使用GigE或更高级别连接的生产数据集的经验,使rsync压缩节制传输速度达到〜40兆字节/秒( 或千兆链路的理论最大速度的33% )。
这个速度随着传输文件的大小和数量而变化( 大量的小文件,例如,降低了整体的rsync吞吐量 )。 发送者和接收者的存储子系统也很重要。
最近,我一直在使用一个修改后的rsync进行局域网传输。 通过使用带rsync的UDR库 (允许UDP传输)以及禁用压缩和encryption,无论文件数量如何,我都可以使用混合文件types进行线速rsync传输。
就像Zoredache说,如果你的链接不饱和没有-z。 此外,你可以考虑帮助pipe理长期转移的其他东西是bwlimit标志。
一些补充Zoredache答案的细节:
使用机器top来检查CPU使用情况。 特别是在发送机上。 如果发件人是远程的,请使用ssh获取发件人。
如果你有足够大的文件来显示有意义的速度,请使用rsync和--progress选项。 如果文件大多数很小,它可能不会告诉你很多有关networking速度。 在这种情况下 …
在其中一台机器上使用iotop来查看networking速度
如果有疑问,不要压缩。
大多数大文件通常已经被压缩(电影,图片,安装程序,…),所以试图压缩它们是浪费时间。