通过 smb 加速 rsync

通过 smb 加速 rsync

我正在通过 SMB 将 Linux 机器备份到 NAS。我在本地安装 NAS,然后 rsync 大量数据(约 100GB)。我认为这需要很长时间:超过 12 小时。我原本以为一旦复制完所有内容,速度会更快,因为几乎没有任何变化。

有没有什么办法可以加快这个速度?

我在想,也许 rsync 认为它正在使用本地硬盘并使用校验和而不是时间/大小比较?但我没有找到强制进行时间和日期比较的方法。还有什么我可以检查的吗?

答案1

我认为您对 rsync 算法以及如何应用该工具存在误解。

Rsync 的性能优势来自于执行增量传输 - 即仅移动文件中已更改的位。为了确定已更改的位,源主机和目标主机必须读取该文件并比较块校验和以确定哪些位已更改。这是 rsync 的“神奇”部分 - rsync 算法本身。

当您使用 SMB 挂载目标卷并使用 rsync 从 Linux“视为”的本地源和本地目标(均挂载在该机器上)复制文件时,大多数现代 rsync 版本都会切换到“整个文件”复制模式,并关闭增量复制算法。这是一个“胜利”,因为在启用增量复制算法的情况下,rsync 会读取整个目标文件(通过 NAS 的线路)以确定文件的哪些部分已更改。

使用 rsync 的“正确方法”是在一台机器上运行 rsync 服务器,在另一台机器上运行 rsync 客户端。每台机器都会从自己的本地存储中读取文件(速度应该非常快),就文件的哪些部分发生了更改达成一致,然后只传输这些部分。使用 rsync 的方式相当于一个虚构的“cp”。您可以使用“cp”完成同样的事情,而且速度可能会更快。

如果您的 NAS 设备支持运行 rsync 服务器(或客户端),那么您就可以开始工作了。如果您只是要通过 SMB 将其安装在源计算机上,那么您也可以使用“cp”来复制文件。

答案2

听起来时间戳是你的问题,正如本页所述:

http://www.goodjobsucking.com/?p=16

建议的解决方案是添加

--modify-window=1

到 rsync 参数。

答案3

是的,您可以加快速度。您需要使源或目标看起来像远程机器,例如将其寻址为“ localhost:”。

您声明您正在本地安装 SMB 共享。这使得源或目标看起来像 rsync 的本地路径。rsync 手册页指出,源和目标是本地路径的副本将复制整个文件。手册页中“--whole-file”选项的段落说明了这一点。因此,不使用增量算法。使用“ localhost:”解决方法将恢复增量算法功能并加快传输速度。

答案4

感觉你的 NAS 比较便宜。也可能是你的带宽问题...

“标准”消费级 NAS 在处理大量 IO 时确实很弱,而这正是您在此处尝试做的。它也可能是一个连接您的 PC 和 NAS 的廉价交换机,其强度不足以正确处理所有数据包。

相关内容