将文件复制到 SMB 安装的 NAS 驱动器时限制网络速度

将文件复制到 SMB 安装的 NAS 驱动器时限制网络速度

我有一个相当普通的 Ubuntu 机器(Jaunty),它作为一个小型网络服务器运行。每天晚上我都会执行一个 cron 任务,它会将重要的目录 tar/gzip 起来,然后执行一个简单的 cp 操作,将它们复制到一个备份 NAS 驱动器上,该驱动器已在本地通过 SMB 安装(实际上是一个“异地”备份)

该盒子的网络连接是 802.11G(54Mbps),所以自然速度很慢,但问题是,当复制文件时,网络服务器和路由器之间的无线带宽会被复制过程完全饱和,网络请求要么被拒绝,要么响应速度非常慢。

我曾尝试使用独立模式下的 Trickle 来限制复制过程,但这似乎没有任何区别。

有人有什么建议或意见吗?我怀疑我需要在服务器上运行某种形式的 QoS,但确实有 NFI。希望能找到一个简单的灵丹妙药解决方案 ;)

谢谢,薛西斯

答案1

有一个wput实用工具,其工作原理与更广为人知的相反wget
它可用于以可控的速率上传您的文件。

−−limit−rate=RATE

如果您不希望 Wput 占用所有可用带宽,请指定此标志。RATE 是一个数值。单位“K”(代表 KiB)和“M”(代表 MiB)是可以理解的。上传速率平均受到限制,这意味着如果您将速率限制为 10K,而 Wput 在前几秒只能发送 5K,那么它之后会发送(如果可能)超过 10K,直到达到 10K 的平均速率。


关于涓涓细流

trickle 是一个用户空间带宽管理器。目前,trickle 支持对通过 socket(2) 接口建立的任何 SOCK_STREAM(参见 socket(2))连接进行整形。此外,trickle 不适用于静态链接的可执行文件,也不适用于 setuid(2) 可执行文件

答案2

如果可能,请使用 rsync。如今大多数 NAS 都提供 rsync 服务,它比 smb 共享更安全,并且允许您精确限制带宽。此外,它只会传输文件之间的差异,而不是每次都传输所有内容。

答案3

也许不是最理想的,但也许你可以将 tar 分割成更小的文件块并让你的脚本在循环底部通过睡眠来迭代它们?

相关内容