在 Linux 中,是否有可能有一个目录包含另一个目录的所有内容(以只读方式),但您可以写入该目录而不会影响“父”目录。
为了提供一些我想要实现的背景信息,我有一个将为所有用户运行的应用程序。此应用程序将几个“包”下载到我希望具有此功能的文件夹中。每个包都有自己独特的文件夹(这是内容的哈希值,因此每个包应该是唯一的 - 但让我们假设软件可以避免哈希冲突)。但是,有很多包,我知道所有用户都希望添加,有些包他们都需要。如果每个用户都用相同的包填充他们的目录,那么一遍又一遍,这将不必要地占用空间,特别是我知道每个用户都会拥有的基本包。
我的看法是,当用户写入文件时,您可以写入文件夹,但当从文件夹读取时,它会与父文件夹合并,或者用户可以拥有某种结合了只读和读写目录的虚拟文件夹,并且写入会自动进入读写目录(我想有点类似于 Windows 7 风格的库)。
我能想到的另一个选项与我最初的请求完全不同,但效果一样好,甚至可能更好,因为它不需要我手动计算哪些包会在用户之间重叠,如果有一个文件系统可以提供重复数据删除功能。然而,我发现这存在性能问题 - 但如果你有任何想法或资源可以参考我,我会看看。我不确定这将如何工作,因为我知道如果请求的文件夹同名,则不需要下载,但使用重复数据删除功能,它需要自己下载包,然后自行进行重复数据删除。
这在 Linux 中是否可行?如果可以,您能提供哪些资源供我研究选项?
答案1
如果您的发行版包含 btrfs,并且您认为它已准备好投入生产,那么您可以使用 btrfs 种子分区。
种子设备。创建一个(只读)文件系统,作为模板来为其他 Btrfs 文件系统提供种子。原始文件系统和设备作为新文件系统的只读起点。使用写时复制,所有修改都存储在不同的设备上;原始文件保持不变。
可以在以下网址找到示例btrfs wiki 页面中的种子
答案2
联合金融服务可以使用任何您想要的底层文件系统来实现这一点。我知道它也包含在许多发行版中。