简写:
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