![使用 Ext4 在 Linux 中使用不同元数据的多个硬链接](https://linux22.com/image/5854/%E4%BD%BF%E7%94%A8%20Ext4%20%E5%9C%A8%20Linux%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E5%A4%9A%E4%B8%AA%E7%A1%AC%E9%93%BE%E6%8E%A5.png)
Ext4 文件系统(或者 Linux 理解的另一种文件系统)是否可以将不同的元数据(如修改时间、所有者、访问权限)分配给引用相同数据的多个硬链接。 (当然,我知道对于尺寸来说这是不可能的)。
理由:我想创建一个简单的重复数据删除存档。文件可能(并且经常会)包含完全相同的数据,但元数据不同。我的想法是为每个文件创建一个硬链接,然后相应地设置元数据。但改变一个硬链接似乎也会改变其他硬链接。 (或者也许我的问题有另一种解决方案?)
答案1
对于 Ext4 来说,硬链接只是指一个索引节点,其中包含所有元数据。
因此,您不能使用硬链接拥有不同的元数据。
我不确定你到底想做什么,但你可以看看git
、zip
或软链接。它们都有处理重复数据的方法。
答案2
不可能将文件内容与包含文件元数据(时间戳、所有者、权限等)的索引节点分离。如果有多个元数据集,大多数元数据都会出现问题:不仅仅是大小(显然需要与内容匹配),还有修改时间(写入文件时必须在每个 inode 中更新)、所有者(如果有多个所有者,谁控制元数据?)等等。
如果您需要比 user-write-group 更灵活的权限,您可以使用访问控制列表,ext4 开箱即用地支持。
您可以使用绑定文件系统呈现具有一些不同元数据的目录树视图。您无法以这种方式更改所有内容,但您可以重新映射用户和组并更改权限。
如果您确实需要具有不相关元数据但具有相同内容的不同文件,并且由于空间问题您不想重复文件内容,则可以使用以下文件系统:重复数据删除。在应用程序中,您几乎什么都不做,让文件系统来解决问题。 Ext4 不进行重复数据删除。ZFS可以做到,但是有成本RAM 和可靠性。Btrfs也可以这样做,有类似的担忧。