为什么rsync -avz比scp -r快?


55

我对此感到困惑吗?为什么rsync比scp快?rsync不是在下面使用scp还是做得更有效率?有什么方法可以加快scp吗?


1
这是新副本。
grm 2010年

Answers:


68

如果目标已经包含一些源文件,则rsync显然比scp更快,因为rsync仅复制差异。但是我怀疑您的问题是关于直接复制到空目标。

您已将-z选项传递给rsync; 这将打开压缩。如果网络带宽是限制因素(通常是限制因素),则压缩可以显着提高传输速度。

您也可以scp通过传递-C选项启用压缩。这应该甚至可以解决rsync问题。ssh默认不启用压缩,因为它可以节省带宽,但会增加延迟和CPU开销。延迟对交互式会话不利(不适用于scp),并且如果要复制的文件已经压缩,则CPU开销无用。

较旧的版本rsync使用rsh而不是ssh作为默认的传输层,因此可以在rsync和之间进行比较rcp。但是ssh自2004年1月1日发布2.6.0以来一直是默认设置。

使用相同的压缩设置,我期望rsyncscp具有基本相同的速度。否则,请分享基准。


3
不错,使用-C
可使

我刚刚针对包含16个文件(约3-9 MB)的目录进行了测试,rsync -z它仍然比scp启用这些答案中建议的任何压缩速度都要快。它也比手动压缩和归档到一个文件然后scp对文件scp进行压缩要快得多(压缩比这还要慢)。所以OP的问题却仍然没有答案:问心无愧是scp比较这么慢rsync
ohcibi

12

快速尝试scp

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

与普通的scp machine:file相比,这些选项在我的设置中将scp加快了5倍。

2017年更新

实际上,由于对TCP详细信息(例如MTU和缓冲区大小)的管理不善,scp速度很慢。幸运的是,此问题已由HPN SSH项目修复。据我了解,您可以将HPN SSH用作rsync的传输。


1
很好,谢谢!!但是,始终始终scp -p将默认值保留(保留日期/时间),并且可能-r(递归)保留默认值scp -pr -C ...。(我只好使用这些来-p
清理

我在命令中添加了-p,感谢您的提示。
彼得·K

4

它曾经是相反的方式,但是我相信rsync的速度在过去的一些修订中已大大提高。这也取决于您要复制多少文件。如果很多,rsync通常会更快,因为scp为要复制的每个文件生成一个新进程。您可以尝试弱化scp所使用的密码,以查看它是否加快了速度。最后我记得,arcfour密码是最快的。


2
实际上,Scp不会为要复制的每个文件产生新的进程。就像rsync一样,您在发送方有一个进程,在接收方有一个进程。
Kenster 2014年

3

对于大量小文件,rysnc比scp快得多。他们说这是因为它的开销较小。对于一个大文件,我希望得到类似的结果。


3

对于我的测试,rsyncscp快,您可以使用iotop在传输同一文件时对其进行测试:

sudo iotop -o

也许您会得到不同的结果,但是您可以自己测试它们。顺便说一句,在使用scp时,不要通过以下方式来选择其密码:

scp -c arcfour <source> <dest>

同时arcfour可以加快加密速度。


0

您要在现有文件上重新复制文件吗?如果是这样,则rsync阻止比较并仅复制差异的功能将很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.