
ショートフォーム:
scp
スイッチで使用する帯域幅を制限するには-l
、kbits/sec 単位の数値を渡します。
.ssh/config
特定の名前のマシンに対して、これをファイルで設定したいと思います。
に相当する名前付き設定は何ですか-l
? 見つけることができませんでした。
フォローアップの質問:
一般的に、Google 検索を実行したり、ケースごとにマニュアル ページを手動で比較したりする以外に、ssh のコマンド ライン オプションと構成名を相互にマッピングする方法がよくわかりません。この 2 つを直接同等にする表はありますか?
最初の質問の長い形式(文脈付き):
私は ssh config をかなり頻繁に使い始めました。特に、プロキシを経由して多くのポート マッピングを行う必要があるためです。必要なトンネリングの種類に応じて、同じマシンを複数回定義することさえあります。
しかし、大きなファイルをアップロードする場合、マシンで他の作業を行うことは困難です。アップロードよりもダウンロードの帯域幅が大きいにもかかわらず、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 のエイリアスを使用するか、関数を使用するというものがあります。通常、Mac と Linux の両方で Bash がデフォルトのシェルなので、次のようにするとうまくいく可能性があります。
alias scp='scp -l 1000 '
-or-
alias scp-throttle='scp -l 1000 '
(引用符内の末尾のスペースに注意してください!1)これにより、毎帯域幅を調整するために使用する scp コマンド。状況を考慮すると、おそらく全体的に最善の解決策です。
2 番目は、通常の転送には scp を使用し、低速の転送には scp-throttle を使用できるため、良い選択かもしれません。
あるいは、もう少し賢い関数:
function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp "$@"; fi; }
基本的に、「-アップロード' 引数のどこにもない場合は、帯域幅制限で転送を実行し、それ以外の場合は通常の転送が行われます。
これにより、アクションを示すために複数の名前/エイリアスを引き続き使用できるようになります。
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