Montaje de un sistema de archivos a través de internet


11

Creé una aplicación web que se ejecuta en un servidor virtual para uno de mis clientes. Incluye la posibilidad de que carguen archivos, pero ahora quieren almacenar esos archivos en un servidor en su oficina.

La forma más fácil de hacer esto sería montar su sistema de archivos a través de Internet directamente en el servidor virtual. Tengo experiencia en montar NFS a través de una red interna, pero no tengo claro si funcionaría en este escenario.

¿Alguna idea? Siempre puedo escribir un nuevo software para transferir los archivos, ¡pero esto sería una solución fácil!

Nota: El servidor en la oficina es el servidor Ubuntu 12 que se ejecuta en un servidor virtual en un entorno Windows Hyper-V. El VPS con la aplicación web es Ubuntu 11.04


¿Es la seguridad un problema para estos archivos?
Adrian Cornish

rsync a través del trabajo cron.
Ignacio Vazquez-Abrams

@AdrianCornish: en realidad no, aunque se preferiría una solución segura.

Respuestas:


12

Nadie ha mencionado sshfs todavía. Si está en una distribución moderna de Linux y tiene acceso ssh al host remoto, es tan simple como:

sshfs user@hostname:/remote/directory /local/directory

El rendimiento es bastante aceptable (pero no tan rápido como una sincronización transmitida como rsync si necesita todo el directorio).


Esta parece ser la mejor solución hasta ahora, las preguntas frecuentes incluso dicen "Los recursos se pueden montar en conexiones lentas y poco confiables (distantes)". Otra página web me dice que "sshfs -o reconecte el servidor: / ruta / a / mount" lo hará reconectarse automáticamente si la conexión se cae.

3

NFS es inherentemente inseguro. Sería una muy mala elección para conectarse a través de Internet.

Me gusta la publicación que menciona rsync. En lugar de usar cron para disparar la transferencia, espero que pueda simplemente ejecutar el trabajo rsync desde su código que maneja la carga del archivo.

Cuando finaliza la carga, rsync el archivo a su servidor, listo.

Tendría que configurar una conexión segura a su servidor para la transferencia, supongo.

Si lo desea, puede colocar los archivos entrantes en una lista para transferirlos, eliminar los nombres después de una copia exitosa, y darse una capacidad de conmutación por error, en caso de que ocurra algo en la conexión.

Como alguien más ya señaló, rsync está diseñado para manejar grupos de archivos o una jerarquía (gracias, corrección ortográfica), por lo que esto no sería tan difícil de lograr.


1
rsync no tiene problemas al usar SSH como transporte.
Ignacio Vazquez-Abrams

La aplicación web ya guarda los archivos en el servidor local y los referencia allí. No habrá espacio en el servidor local, por lo que deberán eliminarse una vez transferidos, lo que significa escribir un nuevo código, por lo tanto, estoy buscando una solución montada primero, si es posible.

1

NFS puede ser inherentemente inseguro, pero eso no es culpa del servicio. Telnet y FTP también son inherentemente inseguros, pero ambos se han utilizado durante décadas en Internet abierto. Si se establece un túnel VPN encriptado, la falta de encriptación NFS es irrelevante.

Además, si un cortafuegos está configurado para permitir que una dirección de host remota específica se conecte al punto de montaje NFS, entonces una conexión NFS sin protección es mayormente segura contra piratería, excepto de las agencias de tres letras que detectan el tráfico de Internet y que tienen acceso a un descifrado potente para rompe tus conexiones remotas encriptadas de todos modos.

Veo que algunas versiones de NFS usan UDP de forma predeterminada, que probablemente es de donde provienen los problemas de confiabilidad de Internet. Los paquetes UDP pueden perderse si la conexión está congestionada y no se intenta automáticamente la retransmisión. Si desea una conexión confiable, asegúrese de que su NFS esté usando (o esté obligado a usar solo) paquetes TCP a través de Internet.


1
> Telnet y FTP también son inherentemente inseguros, pero ambos se han utilizado durante décadas en Internet abierto. Aunque es cierto, no creo que sea un buen punto, porque generalmente se considera una (muy) mala práctica usarlos en Internet. ahora. Mozilla incluso sugiere desaprobar http sin cifrar .
Ian D. Scott

0

NFS se puede hacer a través de un firewall. Si busca, encontrará otros que han intentado y han tenido éxito con este proceso, sin embargo, no es tan sencillo como abrir puertos y parece depender de la versión de NFS que se está ejecutando.

rsync es una excelente sugerencia y tiene mucha flexibilidad. Sin embargo, este sería un proceso ejecutado fuera de su aplicación. rsync puede manejar la sincronización de actualizaciones de archivos locales y mantener un directorio completo sincronizado con otras carpetas.

ssh sería otra opción segura y solo requeriría la apertura de un solo puerto. Lo he usado en el pasado entre sistemas Windows y Linux y funcionó bien tanto desde una aplicación como para programar el proceso.

Estoy seguro de que hay otras formas de lograr lo que está buscando, pero necesitaríamos más información sobre los tipos de archivos que son y si los vincula a una página o los transmite con algo más complejo.


Entiendo las alternativas, montar el sistema de archivos sería la solución más fácil, simplemente no sé qué tan estable es NFS en Internet en comparación con una red interna. ¿Qué sucede si la conexión se cae, etc., o si hay una alternativa más nueva diseñada para ser robusta?

0

Los montajes NFS se pueden hacer usando el montaje automático, que continuará probando el montaje en caso de falla, pero la única forma en que consideraría usarlo sobre las tuberías es con un vpn o alguna otra conexión segura (en realidad, no lo consideraría, pero suenas fijo en la idea).

Incluso si usa el montaje automático, si hay un problema de red, y está colocando sus cargas en el montaje NFS, la carga probablemente fallará o se dañará, a menos que esté almacenando el archivo localmente y luego copie con éxito la carga.

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.