2

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

现在,互联网上在命名叉资源叉之间以及命名叉扩展属性之间存在大量混淆。这是显示它们都是独立概念的时间表:

  • 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 高山脉:APFS
  1. 在所有操作系统版本和所有 Apple 文件系统上始终存在数据分叉和资源分叉。这些天来,操作系统似乎使用资源分支的唯一地方是为文件夹提供自定义图标时。这将创建一个名为的文件,该文件Icon\r使用零长度数据叉和资源叉中的图像数据。文件名包含一个实际的回车符!

  2. 在引入扩展属性之前,命名分叉被支持了 7 年。

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

  4. 在引入 APFS 之前 4 年,已弃用命名分叉。

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

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

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

4

1 回答 1

1

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

$; echo "数据分叉" > test.txt
$; 回声“资源叉”> test.txt/..namedfork/rsrc
$; cat test.txt
数据 fork
$; cat test.txt/..namedfork/rsrc
资源 fork
$; 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 上不存在命名分叉。

于 2021-08-11T12:16:37.000 回答