我想与 Windows 7 客户端共享 Linux 服务器上的文件。我可以选择多种文件共享协议:SMB/CIFS、FTP、WebDAV、NFS……问题是:哪一种最适合我的需求?
以下是我的标准:
- 在快速链路(LAN)上具有高性能,在慢速链路(WAN)上可用。原始吞吐量是最重要的,尽管高随机性能也不错(随机读取/写入,打开大量文件……)。在千兆 LAN 上,我希望能够饱和我的网络链路,并且我希望它感觉就像我正在使用本地驱动器一样。在 WAN 上,我希望开销低,以便它可以适应高延迟并充分利用可用的网络带宽。
- 应用程序透明度,即可作为驱动器号安装或关闭。
- 安全性和防火墙友好性是额外的优势(只要我可以通过 VPN 传输它)。
SMB/CIFS 在 WAN 上速度很慢,FTP 似乎不太透明,而且似乎所有 Windows NFS 客户端都很丑陋,缺乏重要功能,例如正确支持文件名中的 Unicode。我还没有尝试过 WebDAV。
那么,你对这个问题的立场是什么?我并不反对为 LAN 和 WAN 使用两种不同的协议,但出于可用性原因,我宁愿避免这样做。
答案1
您只有几个真正好的选择。您说的没错,WAN 上的 SMB/CIFS 并不是最高效的。使用 SMB/CIFS 的主要好处是避免使用常规的客户端/服务器架构。分散式架构的缺点是效率低下,连接的节点越多,效率就越明显。如果您需要 WAN/LAN 上的分散式设置,SMB/CIFS 将是唯一的选择。此外,出于安全考虑,不建议使用 WAN 上的 SMB/CIFS。
我更喜欢在全部或大部分 Linux LAN 中使用 NFS,尤其是在始终连接的情况下,例如共享主目录。WAN 上的 NFS 对防火墙来说很糟糕。这是可以做到的,我也这样做过,但它不仅仅是打开一个端口。当您想要 NAS 类型的设置时,NFS 确实是一个不错的选择。
如果您可以接受客户端/服务器模型,我强烈推荐 WebDAV。您可以自动获得读取支持(常规 HTTP Web 浏览器)、仅使用一个端口(80 和/或 443)的轻松防火墙以及稳定的性能。
FTP 有其优势,但在 WAN 上,您需要使用显式 SSL 的 FTP。FTPeS 较新,并非所有 FTP 客户端都支持它。现代客户端会支持它,例如 filezilla 的新副本。但再说一次,防火墙不仅仅是打开一个端口。
在我看来,没有比 HTTP 更透明的了。这也是我为 WAN/LAN 所做的,我甚至更喜欢将它用于常规 LAN 传输。
答案2
我更喜欢文件同步而不是共享,例如使用航空飞行学或“Bit Torrent Sync”。