从 java 访问 NFS 共享

accessing an NFS share from java

我正在尝试从我们在 Java 中的应用程序中找出一种访问 NFS 共享(理想情况下是所有权限,但我现在只接受只读)的方法。我花了一天的大部分时间进行研究,我最接近的是 yanfs project (nee WebNFS),但自上世纪以来它似乎没有更新,也没有任何文档。我 运行 用它做了一些低等级的实验,但都没有成功。

由于我们应用程序的性质,我无法预先安装卷(可能有零到很多)并且我希望尽可能避免在程序内部调用 sudo mount。不幸的是,这种方法是我能想到的唯一半可行的解决方案。欢迎任何建议。

另外:没有现代 NFS java 客户端库?真的吗?这不可能是对的。

由于时间紧迫,我们现在要作弊。所以这是我制定的解决方案,以防万一有人后来出现。 我像@dsh 建议的那样调查了 autofs。使用 Autofs,我将 /etc/auto.master 文件设置为具有以下行:

/mnt/fromNFS    /usr/local/etc/auto.fromNFS --timeout=60

然后我触摸了 /usr/local/etc/auto.fromNFS 并将其所有权更改为 运行 应用程序的用户和组。 现在我可以用语法错误的方式修改 auto.fromFNS 文件以包含给定 nfs 共享的行。然后当我去访问那个目录时,它很好地安装了,不需要 sudo。 它并不理想,但看起来它现在可以完成工作。 感谢大家的建议。

你看过这个图书馆吗https://github.com/dCache/nfs4j

它有针对 NFSv3、NFSv4 和 NFS4.1 的服务器和客户端纯 java 实现。

它有点低级,它没有像yaNFS中的XFile那样提供简单的用法。

所以你必须做一些工作来读取和写入文件,但至少它完成了工作,无需安装即可访问 NFS 导出。

您可以在项目存储库中找到一些文件访问示例。