相当于 .ssh/config 的 scp -l Bandwidth_cap?

相当于 .ssh/config 的 scp -l Bandwidth_cap?

简写:

scp您可以限制交换机使用的带宽-l,您可以传递一个以千比特/秒为单位的数字。

我宁愿在我的.ssh/config文件中为某些名称的机器设置它。

的等效命名设置是什么-l?我一直没能找到它。

后续问题:

一般来说,不知道如何在 ssh 命令行选项和配置名称之间来回映射,缺乏进行 Google 搜索或根据具体情况手动比较手册页。有没有一个表格可以直接将两者等同起来?

第一个问题的较长形式,带有上下文:

我已经开始大量使用 ssh 配置,尤其是现在我需要通过代理并进行大量端口映射。我什至根据我需要的隧道类型多次定义同一台机器。

然而,当上传大文件时,在我的机器上很难做任何其他事情。尽管我的下载带宽比上行带宽多,但我认为这scp会使链接饱和,因此即使我的小请求也无法到达互联网。

有一个解决方案,使用-l带宽命令行开关scp

scp -l 1000 bigfile.zip titan:

我想在我的配置中使用它,所以我会创建一个名为“titan-upload”的附加命名条目,并且每当我上传时我都会使用它作为目标。

所以而不是:

scp bigfile.zip titan:

我会说:

scp bigfile.zip titan-upload:

或者甚至根据我所在的位置设置不同的上限:

scp bigfile.zip titan-upload-from-work:
  vs.
scp bigfile.zip titan-upload-from-home:

我一般用的是 Mac 和 Linux。

答案1

唉,正如前面提到的,似乎没有限制带宽的配置选项。 (我检查了源代码!)

一些可能的解决方案是使用 scp 的别名,或者可能是一个函数。 Bash 通常是 mac 和 linux 上的默认 shell,所以这可以工作:

alias scp='scp -l 1000 '
     -or-
alias scp-throttle='scp -l 1000 '

(注意引号内的尾随空格!1)这会导致每一个scp 命令用于限制带宽。考虑到您的情况,也许总体上是最好的解决方案。

第二个可能是一个不错的选择,因为您可以使用 scp 进行“正常”传输,并使用 scp-throttle 进行较慢的传输。

或者是一个函数,需要更多的大脑:

function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp  "$@"; fi; }

基本上,如果我们发现'-上传' 在参数中的任何位置,我们都会以 bw 限制执行传输,否则会发生正常传输。

这将允许您继续使用多个名称/别名来表示操作。

  • scp aaa titan:- 可以正常上传
  • scp aaa titan-upload:- 会节流
  • scp titan:aaa .- 普通的
  • scp titan-upload-from-home:aaa .- 节流
  • scp a-file-to-upload titan:- 哎呀,被节流了,不是故意的!

编辑:

1 - 别名内部的尾随空格允许在别名命令之后进一步扩展别名。非常有帮助/有用。Bash Man Page, __ALIASES__ section

相关内容