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

我正在通过挂载的共享将文件从Linux转移到Windows 7(该共享从Linux上的Windows挂载)..我正在从局域网内的旧机器复制大量数据(即接近TB) 。 我已经不幸了,我只有100MBit。 当然,我一味地使用rsync,但一天之后就已经想知道为什么它感觉如此缓慢。 启用进度表显示我的传输速率约为2MB / s。

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

cp : 05:33 scp (2): 06:33 rsync : 21:51 

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

这些testing非常简单

 (cp|scp|rsync) <source> <destination> 

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

如何有这么大的差异?

更新/解决:

感谢rschuler,我能够解决这个问题:出于效率原因,使用rsync守护进程而不是smb安装。 上述DeltaCopy的作品,但必须注意一些事情

  • 这是一个很好的GUI包装,但如果出了什么问题,知道如何解决它是很好的。 似乎我input了我的用户凭据,在哪个运行rsync服务,错误的第一次,但graphics用户界面不允许我设置一个新的。 我发现它是作为服务运行,并能够在那里设置适当的凭据
  • 需要手动将端口添加到防火墙以允许连接
  • 个人品味:确保股份是密码保护或如果没有,可能确保服务不会自动启动Windows; 以防万一
  • 包装的rsync二进制文件不是本地Windows端口,而是build立在cygwin上。 但是,包含的cygwin DLL不能正确处理UTF8,并且会破坏非ascii字符。 从http://www.okisoft.co.jp/esc/utf8-cygwin/获取一个固定的DLL。

之后,转移额度从2MB / s跃升至〜8MB / s; 绝对精彩!

(共享从Linux上的Windows安装)

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

你需要做的是在两台机器上运行rsync。 这样只有差异(和校验和)将通过networking电缆传输。 DeltaCopy是一个窗口化的rsync。 它有足够的文档让你去。

为了更好地解释为什么我认为你可能会滥用rsync,请参考这个问题的答案。