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

grm*_*grm 63 rsync scp

我对此有点疑惑?为什么 rsync 比 scp 快?rsync 不使用下面的 scp 还是做一些更有效的事情?有什么方法可以加速scp吗?

Gil*_*il' 83

如果目标已经包含一些源文件,rsync 显然会比 scp 快,因为 rsync 只复制差异。但我怀疑您的问题是对空目标进行简单的复制。

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

您还可以scp通过传递-C选项来启用压缩。这应该与 rsync 保持一致。ssh 中默认不启用压缩,因为它节省了带宽但增加了延迟和 CPU 开销;延迟对交互式会话不利(这不适用于scp),如果您正在复制的文件已经压缩,则 CPU 开销是无用的。

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

使用相同的压缩设置,我期望rsync并且scp具有基本相同的速度。如果您发现其他情况,请分享基准。

  • 不错,使用 -C 使我的传输速度从 5MB 增加到 20MB (6认同)
  • 我刚刚测试了一个包含 16 个大约 3-9 MB 文件的目录,在启用这些答案中建议的任何压缩的情况下,“rsync -z”仍然比“scp”快得多。它也比手动压缩并归档到一个文件并对该文件进行“scp”处理更快(压缩的“scp”甚至比这更慢)。所以OP的问题实际上仍然没有得到解答:与“rsync”相比,“scp”为什么这么慢? (2认同)

Pet*_*r K 19

快速尝试 scp

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .
Run Code Online (Sandbox Code Playgroud)

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

更新,2017

实际上,由于对 MTU 和缓冲区大小等 TCP 细节的管理不善,scp 很慢。幸运的是,这已被HPN SSH项目修复。据我了解,您可以使用 HPN SSH 作为 rsync 的传输。

  • 很好,谢谢!!然而,总是将`scp -p`(保留日期/时间)作为默认值,并且可能是`-r`(递归)所以`scp -pr -C ...`。(我只需要使用这些擦洗并重新启动 40Gb scp 作业,因为我忘记了 `-p`) (2认同)

chu*_*rnd 5

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

  • Scp 实际上并没有为每个被复制的文件产生一个新进程。你在发送端有一个进程,在接收端有一个进程,就像 rsync 一样。 (2认同)