这是一个简单的问题,但我做了一些研究,找不到任何答案...所以有人知道当我们通过 xattr 定义扩展属性时,这些属性是否存储在文件内容中(作为文件内容的一部分) (在最后,到底?),或者索引节点是否有一个特殊的区域来存储这些?
顺便说一句,我在 ext4 中读到“每个扩展属性仅限于一个文件系统块(例如 4 KiB)”。如果我想为文件系统中的每个文件存储 7 个扩展属性,我无法判断这是否足够。这现实吗?
我的最后一个问题是,这些扩展属性是否是可移植的,如果文件移动到具有不同文件系统的其他计算机,这些属性会发生什么?
如果您查看 inode 规范,您会发现 inode 末尾有少量空间用于容纳扩展属性。如果您溢出该区域,ext4 允许您为其他扩展属性分配另一个块(基本上类似于资源分叉)。 4KB 限制是针对每个属性、每个文件的,因此每个文件当然可以存储 7 个扩展属性,除非该属性是大于 4KB 的 BLOB。但是,如果超出 inode 末尾的空间,则会将块分配给元数据而不是数据,从而减少文件系统的可用大小。
Source: https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Extended_Attributes https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Extended_Attributes
为了回答有关可移植性的问题,默认情况下不会复制扩展属性,即使在单个文件系统中也是如此,并且在文件系统之间不可移植。
See: https://unix.stackexchange.com/questions/44253/how-to-clone-copy-all-file-directory-attributes-onto- Different-file-directory https://unix.stackexchange.com/questions/44253/how-to-clone-copy-all-file-directory-attributes-onto-different-file-directory对此进行进一步讨论。 Rysnc 可以在复制扩展属性方面做很多事情,但如果目标文件系统不支持 xattrs,那么您就不走运了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)