
¿Existe una herramienta de línea de comandos que admita múltiples conexiones simultáneas y múltiples protocolos de red (ftp, http, etc.)?
He aquí un ejemplo práctico:
Tengo un archivo de copia de seguridad grande en un servidor ssh que quiero transferir a mi máquina actual. La descarga del archivo está tardando demasiado, por lo que quiero utilizar varias conexiones de red simultáneas para acelerarla. Supongamos que el servidor ssh no está muy cargado.
Descargas demúltiples archivos/URLusando conexiones simultáneas sonIrrelevantea esta pregunta.
No quiero tener que escribir ningún código para resolver esto.
Respuesta1
EllftpEl programa puede manejar múltiples protocolos de red y conexiones simultáneas.
Soporte de protocolo:
Lftp admite los siguientes protocolos:
- ftp
- ftp
- http y https
- bittorrent
Más información sobre ftps, etc.aquí.
Descargas paralelas:
Para descargar un único archivo grande ubicado en <URI>
usando 2 conexiones simultáneas:
lftp -c "pget -c -n 2 <URI>"
La primera -c
opción especifica los comandos a ejecutar. pget
establece una transferencia de archivos mediante varias conexiones paralelas. La segunda -c
opción significa continuar la transferencia si esta transferencia se había interrumpido previamente. La -n
opción limita el número máximo de conexiones a utilizar.
Hay más información sobre comandos y opciones en la página en línea.página de manual.
Advertencia:Esto puede acelerar las transferencias, pero carga mucho la red y los servidores. Las aceleraciones dependen de las condiciones de la red y del servidor.
Para abordar el ejemplo práctico de la pregunta:
lftp -c "pget -c -n 2 sftp://[email protected]/~/backups/large.tar.gz"
Este ejemplo descarga un archivo de copia de seguridad grande a través de ssh (sftp) con 2 conexiones simultáneas. Se supone que tiene una configuración de inicio de sesión ssh sin contraseña.
Nota: Lftp también se puede utilizar en modo interactivo; similar a otros comandos ftp.
Respuesta2
aria2
admite múltiples conexiones y FTP, HTTP y SFTP (entre otros).
Por ejemplo:
aria2c -j ${num_concurrent} "${uri}"
Quiero usar múltiples conexiones de red simultáneas para acelerarlo
A menos que el servidor esté configurado para limitar las conexiones individuales, ejecutar múltiples descargas paralelas puede no brindar ningún beneficio... de hecho, puede afectar negativamente su rendimiento.
El uso de herramientas estándar (es decir: rsync
, scp
, curl
)típicamentedarte lo que buscas.
Si las conexiones caídas o las transferencias parciales son un problema, entonces una utilidad como esta puede ser beneficiosa, pero tenga en cuenta que rsync --partial
también ayudará.