APFS 是不是真的支持命名分叉或仅支持资源分叉和扩展属性?

Posted

技术标签:

【中文标题】APFS 是不是真的支持命名分叉或仅支持资源分叉和扩展属性?【英文标题】:Does APFS actually support Named Forks or just Resource Forks and Extended Attributes?APFS 是否真的支持命名分叉或仅支持资源分叉和扩展属性? 【发布时间】:2021-06-11 16:44:41 【问题描述】:

从版本 8.1 到 Mountain Lion (10.8),操作系统支持称为“Named Forks”的概念。命名分叉相当于 Windows 中的“备用数据流”。

There is a ton of confusion on the internet now 在命名分叉资源分叉之间以及命名分叉扩展属性之间。这是显示它们都是独立概念的时间表:

1984 1.0:MFS:数据分叉 + 资源分叉 1985 2.1:HFS:仍然只有数据 + 资源分叉 1988 8.1:HFS+:添加了对命名分叉的支持 2005 10.4 Tiger:HFS+:添加了扩展属性 2013 10.9 Mavericks:HFS+:命名分叉已弃用 2017 10.13 High Sierra:APFS

    在所有操作系统版本和所有 Apple 文件系统上始终存在数据分叉和资源分叉。这些天来,操作系统似乎使用资源分支的唯一地方是为文件夹提供自定义图标时。这将创建一个名为Icon\r 的文件,其中包含一个零长度的数据分支和资源分支中的图像数据。文件名包含一个实际的回车符!

    在引入扩展属性之前,已支持命名分叉 7 年。

    HFS+ 8 年来绝对支持命名分叉和扩展属性,但我不知道一个文件是否可以同时拥有这两者,或者它们是否与 Mavericks 之前的命名分叉和 Mavericks 的扩展属性相同开。

    命名分叉在 APFS 引入前 4 年被弃用。

命名的分叉很少使用。我编写了代码来尝试在文件和目录上调用FSCreateFork。无论是在 HFS+ 还是 APFS 卷上,无论我在 Big Sur 或 Sierra 下运行它,它总是失败并显示错误 -1402“Fork name parameter is bad”。我无权访问其他操作系统版本。

所以由于我找不到测试的方法,而且网上的信息一团糟,我无法谷歌。

这里有专家知道 APFS 是否支持命名分叉吗?

【问题讨论】:

【参考方案1】:

一个快速测试表明资源分支在 APFS 上与 Big Sur 一起工作,但任意命名的分支似乎不能:

$;回显“数据分叉”> test.txt $; echo "资源叉" > test.txt/..namedfork/rsrc $;猫测试.txt 数据分叉 $; cat test.txt/..namedfork/rsrc 资源叉 $; echo "resource fork" > test.txt/..namedfork/other -bash: test.txt/..namedfork/other: 不是目录 $;

更重要的是,Apple File System Reference 描述了 APFS 的内部结构,并详细说明了两个 inode 标志 INODE_HAS_RSRC_FORKINODE_NO_RSRC_FORK。没有提及任何其他类型的分叉或分叉的命名,所以我认为我们可以相当有把握地说 APFS 上不存在命名分叉。

【讨论】:

快速测试不是结论性的,因为它的行为至少与 Mountain Lion 相同,这表明在 fs 之外的其他更高层上删除了支持,因为它仍然被记录,除非文档有误。然而,内部结构的 APFS 参考更支持该立场。 我同意快速测试不是结论性的。 APFS 文档至少正在维护中,因此似乎反映了当前的能力。

以上是关于APFS 是不是真的支持命名分叉或仅支持资源分叉和扩展属性?的主要内容,如果未能解决你的问题,请参考以下文章

命名管道和分叉令人头疼

分叉的子进程是不是使用相同的信号量?

使用管道从 STDIN 读取分叉进程的问题

《区块链100问》第65集:比特币生孩子了

R语言高性能编程

区块链学姐:9月14号以太坊合并倒计时,硬分叉板上钉钉,警惕空军发力