
Forma corta:
Puede limitar el ancho de banda que scp
utiliza el -l
conmutador, pasa un número en kbits/seg.
Prefiero configurar esto en mi .ssh/config
archivo para ciertas máquinas con nombres.
¿Para qué es la configuración con nombre equivalente -l
? No he podido encontrarlo.
Siguiente pregunta:
En general, no estoy seguro de cómo realizar un mapeo entre las opciones de la línea de comando ssh y los nombres de configuración, salvo realizar búsquedas en Google o comparar manualmente páginas de manual caso por caso. ¿Existe una tabla que equipare directamente a los dos?
Forma más larga de la primera pregunta, con contexto:
Empecé a usar bastante la configuración ssh, especialmente ahora que necesito pasar por un proxy y hacer muchas asignaciones de puertos. Incluso defino la misma máquina más de una vez dependiendo del tipo de túnel que necesito.
Sin embargo, cuando subo un archivo grande, es difícil hacer algo más en mi máquina. Aunque tengo más ancho de banda de descarga que de carga, creo que eso scp
satura el enlace, por lo que ni siquiera mis pequeñas solicitudes pueden llegar a Internet.
Hay una solución para esto, usando el -l
interruptor de línea de comando de ancho de banda para scp
.
scp -l 1000 bigfile.zip titan:
En su lugar, me gustaría usar esto en mi configuración, por lo que crearía una entrada con nombre adicional llamada "titan-upload" y la usaría como objetivo cada vez que subo.
Entonces en lugar de:
scp bigfile.zip titan:
Yo diria:
scp bigfile.zip titan-upload:
O incluso establecer diferentes límites dependiendo de dónde me encuentre:
scp bigfile.zip titan-upload-from-work:
vs.
scp bigfile.zip titan-upload-from-home:
Generalmente estoy en Mac y Linux.
Respuesta1
Lamentablemente, como se mencionó, no parece haber una opción de configuración para limitar el ancho de banda. (¡Revisé el código fuente!)
Algunas posibles soluciones son utilizar un alias para scp o quizás una función. Bash suele ser el shell predeterminado tanto en Mac como en Linux, por lo que esto podría funcionar:
alias scp='scp -l 1000 '
-or-
alias scp-throttle='scp -l 1000 '
(¡tenga en cuenta el espacio final entre comillas! 1 ) Esto causaríaCADAComando scp que utiliza para limitar el ancho de banda. Teniendo en cuenta su situación, quizás la mejor solución en general.
La segunda podría ser una buena opción, ya que podría usar scp para transferencias "normales" y scp-throttle para transferencias más lentas.
O una función, con un poco más de cerebro:
function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp "$@"; fi; }
Básicamente, si encontramos '-subir' en cualquier parte de los argumentos, realizamos la transferencia con el límite de bw; de lo contrario, se produce una transferencia normal.
Esto le permitiría continuar usando sus múltiples nombres/alias para indicar acciones.
scp aaa titan:
- subiría normalmentescp aaa titan-upload:
- aceleraríascp titan:aaa .
- normalscp titan-upload-from-home:aaa .
- estranguladoscp a-file-to-upload titan:
- ¡Ups, estrangulado, no intencional!
EDITAR:
1 : el espacio final DENTRO del alias permite una mayor expansión del alias después del comando con alias. MUY útil/útil.Bash Man Page, __ALIASES__ section