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

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

我正在通过已安装的共享将文件从 Linux 传输到 Windows 7(该共享已安装视窗Linux).. 我正在局域网内将大量数据(近 1 TB)从旧机器复制到新机器。不幸的是,我只有 100MBit。当然,我盲目地使用了 rsync,但一天后我就想知道为什么它感觉这么慢。启用进度表显示我的传输速率约为 2MB/s。

因此我取了一个相当大的文件(800MB)并跟踪了传输时间(1):

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

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

测试很简单

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

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

怎么会有这么大的差别呢?

更新/解决:

谢谢舒勒我能够解决这个问题:出于效率原因,使用 rsync 守护进程而不是 smb 安装。上述 DeltaCopy 有效,但需要注意一些事情

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

此后,传输速率从 2MB/s 跃升至约 8MB/s;绝对棒极了!

答案1

(该共享从 Windows 挂载到 Linux)

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

您需要做的是在两台机器上运行 rsync。这样,只有差异(和校验和)会通过网线传输。 增量复制是一个窗口化的 rsync。它有足够好的文档来帮助你上手。

请参阅此问题的赞同答案问题为了更好地解释为什么我认为您可能误用了 rsync。

相关内容