传输大文件而不占用带宽(Linux 是否有 BITS 等价物?)

tom*_*p83 7 remote file-transfer qos bandwidth

Microsoft 的后台智能传输服务 (BITS) 的实现是否可用于 Linux 系统?

我正在研究通过 Internet 将大文件传输到远程 Linux 服务器的选项,我不希望它占用我所有(有限!)上游带宽。

我过去曾在 Windows 系统上成功使用过 BITS,但这次我需要在 Linux 服务器之间进行传输。

如果它有任何区别,两个系统都可能运行基于 Ubuntu 的系统,尽管理想情况下我想要一个独立于发行版的解决方案。

der*_*ert 8

首先,简单的方法:rsync有一个--bwlimit参数。这是一个恒定的速率,但您可以使用它来轻松降低速度。

现在,如果您想要自适应速率,则有linux 流量控制框架,实际上相当复杂。我知道有几个参考资料:

就个人而言,当我必须设置它时,我使用tcng来简化任务。下面是一个例子:

dev office {
    egress {
        class ( <$ssh> ) 
            if ip_tos_delay == 1 && tcp_sport == PORT_SSH ;
        class ( <$kyon> )
            if ip_dst == 172.16.1.62; // monitoring host
        class ( <$fast> )
            if ip_tos_delay == 1;
        class ( <$default> )
            if 1;

        htb() {
            class ( rate 1440kbps, ceil 1440kbps ) {
                $ssh = class ( rate 720kbps, ceil 1440kbps ) { sfq; };
                $kyon = class ( rate 360kbps, ceil 1440kbps ) { sfq; };
                $fast = class ( rate 180kbps, ceil 1440kbps ) { sfq; };
                $default = class ( rate 180kbps, ceil 1440kbps ) { sfq; };
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在该示例中,通过 office 接口发送的流量被分为几类:ssh、kyon、fast 和 default。链路(使用 T1 时)的上限为 1440kbps(这必须略低于实际链路速率,以便缓冲发生在 Linux 机器上,而不是路由器上)。可以看到 ssh 被分配了 720kbps、kyon 360 等。所有都可以突发到全速率(ceil)。当有争用时,'rate' 作为一个比率,所以 ssh 将被赋予 1/2,kyon 1/4 等。'sfq' 表示如何处理多个 ssh 会话;sfq 是一种循环形式。