1 votos

¿El comando scp en mac no respeta la opción -l (límite)?

Estoy jugando con scp en mac y parece para mí como el -l no funciona; aunque también estoy (tal vez más) abierto a la idea de que simplemente estoy malinterpretando o utilizando mal algo. No estoy tratando de resolver un problema que requiere limitar el ancho de banda de una transferencia por lo que no necesito sugerencias alternativas, sólo tengo curiosidad por lo que está pasando con mi intento de utilizar esta opción específica. Buscando dis / confirmación de que este es el comportamiento de otros están viendo y / o una explicación de lo que está mal con mi intento.

Hice un archivo de 10K y luego trató de scp a localhost:<file> con un límite de 1Kb/s pensando que debería tardar ~80 segundos pero la salida de scp muestra una velocidad de transferencia superior a 1Kb/s y el comando se completa efectivamente de forma inmediata.

man scp output for -l option

xy@xyz exploring-scp % man scp | grep -B1 Limits
    -l limit. 
        Limits the used bandwidth, specified in Kbit/s.

sh commands I used

src=$(mktemp)                                           
cat /dev/random | head -c 10240 > $src                  
scp -i ~/.ssh/id_rsa -l 1 $src localhost:/tmp/random.bin

Mi primer pensamiento fue que tal vez está siendo "inteligente" y ver localhost y saltarse la red y por lo tanto saltarse con límite de ancho de banda; pero lo mismo sucede tanto si utilizo la IP explícita para localhost, y también si trato de scp el archivo desde un contenedor docker de vuelta al host mac.

También estoy bastante seguro de que he utilizado el -l con éxito en linux incluso al copiar a/desde localhost. (Estuve jugueteando con ello hace un rato en linux pero ahora mismo no me es conveniente acceder a una máquina linux para probarlo).

MacBook Pro (Retina, 13-inch, Early 2015)
2.7 GHz Dual-Core Intel Core i5
8 GB 1867 MHz DDR3
Intel Iris Graphics 6100 1536 MB

Gracias

1voto

Neil McKeown Puntos 348

En scp es bastante básica, pero wget y rsync ofrecen esta posibilidad y son un poco más detallados al respecto.

man wget te lo dirá:

Tenga en cuenta que Wget implementa la limitación durmiendo la cantidad apropiada de tiempo después de una lectura de red que tomó menos tiempo que el especificado por la tasa. Con el tiempo, esta estrategia hace que la transferencia TCP se ralentice hasta alcanzar aproximadamente la tasa especificada. Sin embargo, este equilibrio puede tardar algún tiempo en alcanzarse. por lo que no se sorprenda si la limitación de la velocidad no funciona bien con archivos muy pequeños.

man rsync dice:

Rsync escribe datos a través del socket en bloques, y esta opción limita el tamaño de los bloques que rsync escribe e intenta mantener el promedio de transferencia. en el límite solicitado. Se pueden ver algunas ráfagas donde rsync escribe un bloque de datos y luego duerme para que la tasa promedio cumpla con los requisitos.

No puedo asegurar que ninguno de los dos sea el caso de scp pero he tenido éxito aplicando límites de velocidad a archivos particularmente grandes.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X