为什么我的 rsync 与纯 cp 甚至 scp 相比如此慢?

mar*_*ark 15 performance rsync

我通过安装份额(份额被安装在Linux文件transfering到Windows 7视窗的Linux)..我复制大量数据(即近TB)从旧到新机器上我的局域网内. 我已经很不幸了,我只有 100MBit。自然地,我盲目地使用了 rsync,但在一天后已经想知道为什么它感觉如此缓慢。启用进度表显示我的传输速率约为 2MB/s 。

所以我拿了一个合理的大文件(800MB)并跟踪传输时间(1):

cp : 05:33
scp (2): 06:33
rsync : 21:51
Run Code Online (Sandbox Code Playgroud)

1) 我删除了每次运行之间的文件
2) 通过 localhost scp 到同一台 Linux 机器直接到共享;完全没用,但提供了一个进度表

测试很简单

(cp|scp|rsync) <source> <destination>
Run Code Online (Sandbox Code Playgroud)

除了 scp 的主机/端口外,没有特殊参数。我什至尝试-W切换 rsync 但十分钟后取消。rsync 是在 Lenny 上运行的 3.0.3。能够随时中断复制过程并恢复使我使用 rsync,但现在我认为我真的需要重新考虑这个要求。

怎么可能有这么大的差别?

更新/解决:

感谢rschuler,我能够解决这个问题:出于效率原因,使用 rsync 守护进程而不是 smb 挂载。所说的 DeltaCopy 有效,但必须注意一些事项

  • 这是一个很好的 GUI 包装器,但如果出现问题,最好知道如何修复它。似乎我第一次输入了我的用户凭据,在该凭据下运行 rsync 服务是错误的,但是 GUI 不允许我设置新的凭据。我发现它作为服务运行并且能够在那里设置正确的凭据
  • 需要手动将端口添加到防火墙以允许连接
  • 个人品味:确保共享受密码保护,如果没有,请确保服务不会自动启动 Windows;以防万一
  • 包装的 rsync 二进制文件不是本地 Windows 端口,而是构建在 cygwin 上。但是,包含的 cygwin DLL 不能正确处理 UTF8 和损坏的非 ascii 字符。从http://www.okisoft.co.jp/esc/utf8-cygwin/获取固定的 DLL 。

之后,传输速率从 2MB/s 跃升至 ~8MB/s ;绝对精彩!

Rod*_*ler 19

(共享是从 Linux 上的 Windows 挂载的)

那是你的问题。rsync 正在对目标进行滚动校验和。窗户共享。您正在通过网络提取所有数据来计算校验和。(可能不止一次)。

您需要做的是在两台机器上都运行 rsync。这样,只有差异(和校验和)才会通过网络电缆传输。 DeltaCopy是一个窗口化的 rsync。它有足够好的文档来帮助你前进。

请参阅此问题的投票答案以获得更好的解释,为什么我认为您可能会滥用 rsync。