Pab*_*blo 9 backup performance rsync samba server-message-block
我正在通过 SMB 将 Linux 机器备份到 NAS。我在本地安装 NAS,然后同步大量数据(100GB 左右)。我相信这需要很长时间才能完成:超过 12 个小时。一旦所有内容都被复制,我预计会快得多,因为几乎每天都没有任何变化。
有没有办法加快这个速度?
我在想,也许 rsync 认为它可以使用本地硬盘并使用校验和而不是时间/大小比较?但我没有找到强制时间和日期比较的方法。还有什么我可以检查的吗?
Eva*_*son 32
我认为您对 rsync 算法以及应该如何应用该工具存在误解。
Rsync 的性能优势来自于进行增量传输——也就是说,只移动文件中更改的位。为了确定更改的位,源主机和目标主机必须读取文件并比较块校验和以确定哪些位发生了更改。这是 rsync 的“神奇”部分——rsync 算法本身。
当您使用 SMB 安装目标卷并使用 rsync 从 Linux“视为”本地源和本地目标(均安装在该机器上)复制文件时,大多数现代 rsync 版本切换到“整个文件”复制模式,并关闭增量复制算法。这是一个“胜利”,因为在启用增量复制算法的情况下,rsync 将读取整个目标文件(通过来自 NAS 的线路)以确定文件的哪些位已更改。
使用 rsync 的“正确方法”是在一台机器上运行 rsync 服务器,在另一台机器上运行 rsync 客户端。每台机器都会从它自己的本地存储中读取文件(这应该非常快),就文件的哪些位发生了变化达成一致,并且只传输这些位。他们使用 rsync 数量的捏造“cp”的方式。你可以用 'cp' 完成同样的事情,它可能会更快。
如果您的 NAS 设备支持运行 rsync 服务器(或客户端),那么您就可以开展业务了。如果您只是打算通过 SMB 将其挂载到源计算机上,那么您不妨仅使用“cp”来复制文件。
小智 7
听起来时间戳是您的问题,因为此页面涉及:
http://www.goodjobsucking.com/?p=16
建议的解决方案是添加
--modify-window=1
Run Code Online (Sandbox Code Playgroud)
到 rsync 参数。
是的,你可以加快速度。您需要使源或目标看起来像远程机器,例如将其寻址为“ localhost:”。
您声明您正在本地安装 SMB 共享。这使得源或目标看起来像 rsync 的本地路径。rsync 手册页指出,源和目标是本地路径的副本将复制整个文件。这在手册页中“--whole-file”选项的段落中进行了说明。因此,不使用增量算法。使用“ localhost:”解决方法将恢复增量算法功能并加快传输速度。
闻起来就像你有一个更便宜的 NAS。它也可能来自您的网络带宽......
当涉及到繁重的 IO 时,“标准”消费类 NAS 确实很弱,而这正是您在这里尝试做的。它也可能是连接您的 PC 和 NAS 的廉价交换机,其强度不足以正确处理所有数据包。