Transferencia de archivos confiable a través de un enlace de red lento o débil

8

Necesito transferir una cantidad de archivos a través de un enlace de banda ancha de baja calidad a un servidor. Los archivos son grandes y tardan aproximadamente 30 minutos en transferirse por archivo.

Uso scp, pero a veces se cuelga: la transferencia no falla con un error, sigue ejecutándose, pero no se transfieren más datos.

Por lo tanto, estoy buscando una solución de carga "a prueba de fallos", una que funcione incluso si el enlace falla durante unos minutos o no es confiable.

Mi idea es:

  1. dividir archivos grandes en partes pequeñas
  2. cargar piezas, con tiempo de espera y volver a intentar si falla

Preguntas:

  • ¿Existe una herramienta lista para ejecutar que implemente esta idea? (ninguna necesidad específica de scp. podría ser ftp o cualquier otra cosa)
  • ¿hay alguna manera de detectar cuándo se bloquea scp? ((es decir, todavía se está ejecutando, pero no transfiere datos)
usuario1219721
fuente

Respuestas:

15

Puede usar rsync para copiar su archivo de una computadora a otra. rsync puede usar ssh como su transporte subyacente. Combine rsync --partialcon un script como este para volver a intentarlo en caso de falla de la red, y debería poder mover sus archivos incluso ante errores de red.

Otra forma de hacerlo sería montar el sistema de archivos remoto en su computadora local con sshfs -o reconnect, y luego simplemente copiar los archivos. sshfs / Linux se encargará del resto. Según algunas pruebas que hice hoy, esto parece ser mucho más lento que rsync.

Finalmente, puede configurar una VPN entre las dos máquinas. Esto implica la mayor parte del trabajo, y cualquiera de las soluciones anteriores es mucho más fácil, pero resolvería el problema de una conexión de red débil. Y como algunas personas han notado, esto también puede ser escamoso. Se puede trabajar si el VPN es muy agresivo sobre las conexiones restableciendo, como OpenVPN es, pero las soluciones anteriores son mucho mejores.

Michael Hampton
fuente
1
Con el fin de hacer este trabajo, tendrá que utilizar la --partialbandera (o algo que implica --partialcomo --inplace) de lo contrario cada vez que se interrumpe la transferencia, se borrará la transferencia parcial y vas a tener que empezar de nuevo.
womble
Rsync definitivamente es el camino a seguir ... O robocopy para windows.
Brian Adkins
¿Cómo exactamente una VPN ayudaría con una conexión flakey?
EEAA
El software VPN (por ejemplo, OpenVPN) puede volver a conectarse automáticamente en segundo plano, de forma transparente a cualquier aplicación que se ejecute a través de la VPN.
Michael Hampton
@ErikA Mis pensamientos con precisión: VPN sobre flakey link = flakey VPN que siempre tiene que reiniciarse. Solo agrega un segundo nivel al problema, que es que el software de transporte debe poder reiniciar la transferencia de archivos exactamente donde se interrumpió.
Fiasco Labs