web-dev-qa-db-ja.com

.ssh / configのscp-lbandwidth_capと同等ですか?

短い形式:

scp-lスイッチで使用する帯域幅を制限することができ、キロビット/秒単位の数値を渡します。

特定の名前のマシンの.ssh/configファイルでこれを設定したいと思います。

-lの同等の名前付き設定は何ですか?私はそれを見つけることができませんでした。

フォローアップの質問:

一般に、Google検索を実行したり、ケースバイケースでmanページを手動で比較したりする以外に、sshコマンドラインオプションと構成名の間を行き来する方法がわかりません。 2つを直接同等にするテーブルはありますか?

最初の質問の長い形式、コンテキスト付き:

私はsshconfigをかなり使い始めました。特に、プロキシを経由して多くのポートマッピングを行う必要があるためです。必要なトンネリングのタイプに応じて、同じマシンを複数回定義することもあります。

ただし、大きなファイルをアップロードする場合、自分のマシンで他のことを行うのは困難です。ダウンロード帯域幅がアップよりも多いのに、scpがリンクを飽和させて、小さなリクエストでもインターネットに到達できないと思います。

scp-l帯域幅コマンドラインスイッチを使用して、これを修正しました。

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を使用しています。

4
Mark Bennett

残念ながら、前述のように、帯域幅を制限するための構成オプションはありません。 (ソースコードをチェックしました!)

いくつかの可能な解決策は、scp、またはおそらく関数のエイリアスを使用することです。 Bashは通常、MacとLinuxの両方でデフォルトのシェルであるため、これは機能する可能性があります。

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

(引用符内の末尾のスペースに注意してください!1)これにより[〜#〜] every [〜#〜] scpコマンドを使用して帯域幅を抑制します。あなたの状況を考えると、おそらく全体的に最良の解決策です。

「通常の」転送にはscpを使用し、低速の転送にはscp-throttleを使用できるため、2番目が適切な選択になる場合があります。

または、もう少し頭脳を備えた関数:

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

基本的に、引数のどこかに「-upload」が見つかった場合、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

3
lornix