
Короткая форма:
Вы можете ограничить полосу пропускания , scp
используемую -l
коммутатором, передав число в кбит/с.
Я бы предпочел установить это в своем .ssh/config
файле для определенных имен машин.
Какой эквивалент именованного параметра для -l
? Я не смог его найти.
Дополнительный вопрос:
В общем, не уверен, как сопоставлять туда и обратно параметры командной строки ssh и имена конфигураций, если не считать поиска в Google или ручного сравнения страниц man в каждом конкретном случае. Есть ли таблица, которая напрямую уравнивает эти два?
Более длинная форма первого вопроса с контекстом:
Я начал использовать ssh config довольно часто, особенно теперь, когда мне нужно проходить через прокси и делать много сопоставлений портов. Я даже определяю одну и ту же машину несколько раз в зависимости от того, какой тип туннелирования мне нужен.
Однако при загрузке большого файла на моей машине сложно делать что-либо еще. Несмотря на то, что у меня больше пропускной способности для скачивания, чем для загрузки, я думаю, что это scp
перегружает ссылку, поэтому даже мои небольшие запросы не могут достичь Интернета.
Эту проблему можно решить с помощью -l
переключателя командной строки band для 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, так что это может сработать:
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