从版本 8.1 到 Mountain Lion (10.8),操作系统支持一个名为“Named Forks”的概念。命名分叉相当于 Windows 中的“备用数据流”。
现在互联网上在命名分叉与资源分叉之间以及命名分叉与扩展属性之间存在大量混乱。这是显示它们都是独立概念的时间表:
所有操作系统版本和所有 Apple 文件系统上一直存在数据分叉和资源分叉。如今,操作系统似乎唯一使用资源分叉的地方是为文件夹提供自定义图标。这将创建一个名为
Icon\r
的文件,其中包含零长度数据分支和资源分支中的图像数据。文件名包含实际的回车符!
在引入扩展属性之前,命名分叉已得到支持 7 年。
HFS+ 绝对支持命名分叉和扩展属性 8 年,尽管我不知道一个文件是否可以同时拥有这两种属性,或者它们是否与 Mavericks 之前的命名分叉和 Mavericks 上的扩展属性相同。 .
命名分叉在 APFS 推出前 4 年已被弃用。
命名叉子从来没有被广泛使用过。我编写了代码来尝试在文件和目录上调用
FSCreateFork
。无论是在 HFS+ 还是 APFS 卷上,无论我在 Big Sur 还是 Sierra 下运行它,它总是会失败并出现错误 -1402“Fork name 参数错误”。我无法访问其他操作系统版本。
所以我找不到测试的方法,而且网上的信息很混乱,所以我无法Google。
这里有高手知道APFS是否支持命名分叉吗?
快速测试表明,资源分叉可以与 APFS 上的 Big Sur 配合使用,但任意命名的分叉似乎不能:
$; echo“数据叉”> test.txt
$; echo“资源叉”> test.txt/..namedfork/rsrc
$;猫测试.txt
数据叉
$;猫测试.txt/..namedfork/rsrc
资源叉
$; echo“资源叉”> test.txt/..namedfork/其他
-bash: test.txt/..namedfork/other: 不是目录
$;
更重要的是,Apple 文件系统参考描述了 APFS 的内部结构,并详细介绍了两个 inode 标志
INODE_HAS_RSRC_FORK
和 INODE_NO_RSRC_FORK
。没有提及任何其他类型的分叉或分叉的命名,因此我认为我们可以相当有把握地说 APFS 上不存在命名的分叉。