通过互联网安装文件系统

我为我的一个客户构build了一个在虚拟服务器上运行的Web应用程序。 它包括他们上传文件的工具,但他们现在想要将这些文件存储在办公室的服务器上。

最简单的方法是将其文件系统通过互联网直接挂载到虚拟服务器上。 我有在内部networking上安装NFS的经验,但我不清楚它是否可以在这种情况下工作。

有什么想法吗? 我总是可以编写新的软件来传输文件,但这将是一个简单的解决scheme!

注意:办公室中的服务器是在Windows Hyper-V环境中的虚拟服务器上运行的Ubuntu 12服务器。 带有Web应用程序的VPS是Ubuntu 11.04

没有人提到sshfs呢。 如果您使用的是现代化的Linux发行版,并且可以通过ssh访问远程主机,那么就像下面这样简单:

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

性能是完全可以接受的(但是,如果你需要整个目录的话,还不如像rsync那样的stream式传输同步)。

NFS本质上是不安全的。 这将是一个非常糟糕的select通过互联网连接。

我喜欢提到rsync的post。 而不是使用cron来启动传输,我希望你可以简单地从处理file upload的代码中运行rsync作业。

当上传完成时,将文件rsync同步到他们的服务器,完成。

你会需要build立一个安全的连接到他们的服务器的转移,我期望。

如果你愿意的话,你可以把传入的文件放到一个传输列表中,成功复制后删除名称,并给自己一些故障切换能力,以防万一连接发生。

正如其他人已经指出的那样,rsync被devise为处理文件组或层次结构(谢谢,拼写检查),所以这不会很难完成。

NFS本质上可能是不安全的,但这不是服务的错误。 Telnet和FTP本身也是不安全的,但是在开放的Internet上已经使用了几十年。 如果build立了一个encryption的VPN隧道,那么缺乏NFSencryption是无关紧要的。

另外,如果防火墙被configuration为只允许特定的远程主机地址连接到NFS挂载点,那么一个裸露的NFS连接大部分都是安全的,除了三个字母代理嗅探互联网stream量,并且有权访问强大的解密无论如何破解你的encryption的远程连接。

我发现某些版本的NFS默认使用UDP,这可能是Internet可靠性问题的来源。 如果连接拥塞,UDP数据包可能会丢失,并且不会自动尝试重传。 如果你想要一个可靠的连接,确保你的NFS正在使用(或者只能使用)通过Internet的TCP数据包。

NFS可以通过防火墙完成。 如果你search,你会发现其他谁已经尝试过,并成功与这个过程,但是,它不像打开端口直接,并且似乎依赖于正在运行的NFS版本。

rsync是一个很好的build议,并有很大的灵活性。 但是,这将是一个在您的应用程序之外运行的进程。 rsync可以处理本地文件更新的同步,并保持整个目录与其他文件夹同步。

SSH将是另一个安全选项,只需要打开一个端口。 过去我曾经在Windows和Linux系统之间使用过这个技术,并且在应用程序内部以及调度过程中都做得很好。

我相信还有其他的方法可以完成你正在寻找的东西,但是我们需要更多关于这些文件types的信息,如果你把它们链接到一个页面或者用更复杂的东西进行stream式处理。

NFS挂载可以使用automount来完成,它会在失败时继续尝试mount,但是我认为通过pipe道使用它的唯一方法是使用vpn或其他安全连接(实际上,我不会考虑它,但是你听起来固定在这个想法上)。

即使使用自动挂载,如果存在networking问题,并且您将其上传到NFS挂载,上传可能会失败或损坏,除非您在本地存储文件,然后复制上载成功。