cURL SFTP velocidad de carga solo 50% en comparación con la línea de comando SFTP


1

Necesito usar cURL para cargar algunos archivos en un servidor SFTP, tiene que usar cURL porque luego usaré cURL_multi, etc. para transferir archivos simultáneamente (a menos que alguien conozca una biblioteca de línea de comandos que admita FTP, SFTP usando contraseña, SFTP usando la llave, y soporta hasta 10 transferencias simultáneas).

El problema que tengo es que cURL se ejecuta dolorosamente lento. Al cargar usando el cliente SFTP estándar en Ubuntu 12.04, obtengo alrededor de 70Kb / s (esto está bien, esa es solo la velocidad del servidor), pero cuando uso cURL, es alrededor de 35Kb / s, la mitad de la velocidad de SFTP: /

¿Alguien sabe de alguna manera que pueda acelerar cURL, preferiblemente sin tener que volver a compilar cURL, pero lo haré si es necesario?

Aquí está el comando para SFTP:

/usr/bin/sftp -oProtocol=2 -oIdentityFile=/path/to/key.pri -oPort=5000 -oStrictHostKeyChecking=no username@thedomain.com

entonces justo put filename.wavcuando está conectado ...

y con cURL:

curl -v -u username: --key /path/to/key.pri --pubkey /path/to/key.pub -T /path/to/filename.wav sftp://thedomain.com:5000/folder/TEST/filename.wav --insecure

Esta es la información de la versión cURL:

curl 7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 libssh2/1.2.8 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

¿Seguramente no puede ser tan lento para todos?

Respuestas:


1

Desafortunadamente, este es un problema conocido con curl. Parece que puede mitigarse recompilando con uno más grande CURL_MAX_WRITE_SIZE; vea esta entrada de su lista de correo .

Dado que al final está tratando de lograr la carga múltiple, aún puede tener éxito en llenar su tubería saliente con SFTP sobre curl, lo que le daría el mejor rendimiento posible de todos modos :)


El problema que tenemos es que hay una complejidad adicional de usarlo con PHP ... si tengo que volver a compilar cURL, creo que también tengo que volver a compilar PHP, y no puedo arriesgarme cuando se usa en un sitio de producción en vivo!
BT643

La forma en que necesitamos enviar los archivos tampoco utiliza completamente la naturaleza "múltiple" ... tenemos que enviar un bloque de archivos a la vez, y solo podemos enviar más cuando hayan terminado, a veces esto significa que podemos solo enviamos uno a la vez, y otras veces podemos enviar 10 a la vez :( creo que tendré que usar un método diferente :(
BT643
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.