27

macOS High Sierra 提供了一个新的文件系统:APFS。

该文件系统支持文件的克隆操作: 存储上没有数据重复。

cp命令有一个标志(-c),可以在终端(shell)中进行克隆。

但是之后我没有找到一种方法来识别这些克隆文件。

有人知道如何使用 shell 命令或现有命令中的标志来识别克隆文件,例如ls

4

3 回答 3

5

3 年零 2 个月后...由于 stackoverflow 上的这个问题,我得到了很多分数。

所以昨天我决定重新讨论这个话题:)。

使用 fcntl 和 F_LOG2PHYS 可以检查文件是否使用相同的物理块。

所以我使用这个想法制作了一个实用程序并将其放在 github 上(https://github.com/dyorgio/apfs-clone-checker)。

这只是第一个版本,但我希望社区可以改进它。

现在也许可以诞生一个使用克隆 APFS 功能删除重复文件的好工具。>:)

于 2020-12-10T19:29:51.527 回答
0

您使用的命令不是 APFS-Filesystem 的功能。CP -c 命令调用一个名为“clonefile”的函数,该函数自 2015 年以来就是 bsd 的一部分(s. Man-Page)

http://www.manpagez.com/man/2/clonefile/

因此,例如,如果您克隆一个文件,您可以从 Original 更改属性,并且 Clone 可以具有不同的属性。

我认为,您正在搜索的功能是按复制和写入构建的。如果您使用 Time Machine 进行克隆,您会看到不同的情况。

A 今天还没有找到每个终端的突击队来显示这种差异,但是 clonefile 命令因此不是正确的功能。

今天唯一已知的在克隆中显示更改的属性的方法是 Apple Time Machine 备份解决方案。

这是一个快照解决方案。在这个 Apple Dev Support-Case 中,关于这个的一些事情:

https://forums.developer.apple.com/thread/81171

于 2017-10-20T08:26:59.753 回答
-2

我认为这是您不应该使用的 APFS 的内部专有功能。我觉得它是一个相对无用的功能。如果您想拥有两个相同的文件并使用标准 API,请尝试使用硬链接或软链接,或者使用 Apple 别名。

于 2019-08-26T05:42:21.147 回答