
Forma curta:
Você pode limitar a largura de banda scp
usada com o -l
switch, passando um número em kbits/s.
Prefiro definir isso em meu .ssh/config
arquivo para determinados nomes de máquinas.
Qual é a configuração nomeada equivalente para -l
? Eu não consegui encontrá-lo.
Questão a seguir:
Geralmente, não tenho certeza de como mapear entre as opções de linha de comando ssh e os nomes de configuração, além de fazer pesquisas no Google ou comparar manualmente as páginas de manual caso a caso. Existe uma tabela que iguala diretamente os dois?
Forma mais longa da primeira pergunta, com contexto:
Comecei a usar bastante o ssh config, especialmente agora que preciso passar por um proxy e fazer muitos mapeamentos de portas. Eu até defino a mesma máquina mais de uma vez, dependendo do tipo de tunelamento necessário.
No entanto, ao enviar um arquivo grande, é difícil fazer qualquer outra coisa na minha máquina. Mesmo que eu tenha mais largura de banda de download do que acima, acho que isso scp
satura o link, de modo que mesmo minhas pequenas solicitações não conseguem acessar a Internet.
Há uma solução para isso, usando a -l
opção de linha de comando de largura de banda para scp
.
scp -l 1000 bigfile.zip titan:
Eu gostaria de usar isso em minha configuração, então criaria uma entrada adicional chamada "titan-upload" e a usaria como destino sempre que fizer upload.
Então, em vez de:
scp bigfile.zip titan:
Eu diria:
scp bigfile.zip titan-upload:
Ou até mesmo definir limites diferentes dependendo de onde estou:
scp bigfile.zip titan-upload-from-work:
vs.
scp bigfile.zip titan-upload-from-home:
Geralmente uso Mac e Linux.
Responder1
Infelizmente, como foi mencionado, não parece haver uma opção de configuração para limitar a largura de banda. (Eu verifiquei o código-fonte!)
Algumas soluções possíveis são usar um alias para scp, ou talvez uma função. Bash é normalmente o shell padrão no Mac e no Linux, então isso pode funcionar:
alias scp='scp -l 1000 '
-or-
alias scp-throttle='scp -l 1000 '
(observe o espaço à direita entre aspas! 1 ) Isso causariaTODOComando scp que você usa para limitar a largura de banda. Considerando a sua situação, talvez a melhor solução geral.
A segunda pode ser uma boa escolha, já que você pode usar scp para transferências 'normais' e scp-throttle para transferências mais lentas.
Ou uma função, com um pouco mais de inteligência:
function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp "$@"; fi; }
Basicamente, se encontrarmos '-carregar'em qualquer lugar dos argumentos, realizamos a transferência com o limite bw, caso contrário, ocorre uma transferência normal.
Isso permitiria que você continuasse usando seus vários nomes/aliases para denotar ações.
scp aaa titan:
- carregaria normalmentescp aaa titan-upload:
- iria estrangularscp titan:aaa .
- normalscp titan-upload-from-home:aaa .
- estranguladoscp a-file-to-upload titan:
- opa, estrangulado, não intencional!
EDITAR:
1 - O espaço à direita DENTRO do alias permite maior expansão do alias após o comando alias. MUITO útil/útil.Bash Man Page, __ALIASES__ section