
簡寫:
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