在用户空间中按照可用带宽的百分比来控制rsync带宽使用情况?

我经常在基于OSX的笔记本电脑上使用rsync来将一些文件同步到Linux服务器。 笔记本电脑可以连接到不同的networking,具有很大的变化带宽(办公室以太网,wifi,3G等)。 – --bwlimit=Kbps选项允许通过指定硬(好,近似硬)限制来控制在用户空间中使用的带宽rsync本身。 但是,它以Kbps表示,这使得在不同networking上使用的自动化脚本(如笔记本电脑所连接的那些脚本)很难使用。

有没有办法告诉rsync使用一个百分比的带宽,而不是用K表示的限制? 另外,我可以很容易地dynamic计算这个值或包装rsync脚本来做到这一点?

我想要一个可以在OS X上运行的解决scheme,或者说Linux的失败 – 理想情况下都是这样。

注意 :我想避免涉及使用防火墙或类似的硬核stream量整形的解决scheme。 大概或估计值的限制是可以的。

假设你有Python,你可以修改speedtest-cli来改变它的打印结果,或者把它作为一个模块导入到你自己的程序中,并使用它的downloadSpeed()函数的返回值。 现在,你可以得到:

 $ ./speedtest-cli --simple Ping: 375.668 ms Download: 66.36 Mbit/s Upload: 41.05 Mbit/s