![按需填充的只读文件系统](https://linux22.com/image/752175/%E6%8C%89%E9%9C%80%E5%A1%AB%E5%85%85%E7%9A%84%E5%8F%AA%E8%AF%BB%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.png)
基本上,我有一个可以通过 NFS 和 ssh 访问的文件系统。我需要在本地复制一份。但我只想提取我需要的文件(基本上是按需缓存它们)。由于我将使用它作为只读文件系统,因此缓存相当于永久副本(即使远程也不会改变)。那么,是否有一个应用程序可以开箱即用,或者我应该为此编写自己的 FUSE 实现?问题是 FUSE 实现适用于 Mac(尽管我有一个正在运行的 Linux 容器,它也可以执行此操作。)
答案1
挂载 NFS 共享。
如果需要,只读。无论是服务器端导出,还是本地使用rdonly
安装选项导出。
NFS 固有的特性是仅按需传输文件,您必须打开文件才能获取其内容。缓存(无论是客户端还是服务器端)可保持后续访问速度快。如果出于某种原因您希望预热缓存,只需读取文件即可。
如果不是 NFS,将整个卷同步到本地会很简单。远程不会改变。但不符合仅在需要时才拥有本地副本的要求。
NFS 的优势在于它已经实现。它已作为 macOS 或 Linux 的文件系统,并已作为您环境中的文件共享。在尝试编写自己的缓存文件系统(在我看来为时过早)进行优化之前,请先查看它的性能。
答案2
如果相关文件的数量不是太多,那么您可以为这些文件配置 inotify。在文件写入后(并且文件描述符已关闭),您可以启动rsync
该文件。