macOS High Sierra 提供了一个新的文件系统:APFS。
该文件系统支持文件的克隆操作: 存储上没有数据重复。
cp
命令有一个标志(-c),可以在终端(shell)中进行克隆。
但是之后我没有找到一种方法来识别这些克隆文件。
有人知道如何使用 shell 命令或现有命令中的标志来识别克隆文件,例如ls
?
macOS High Sierra 提供了一个新的文件系统:APFS。
该文件系统支持文件的克隆操作: 存储上没有数据重复。
cp
命令有一个标志(-c),可以在终端(shell)中进行克隆。
但是之后我没有找到一种方法来识别这些克隆文件。
有人知道如何使用 shell 命令或现有命令中的标志来识别克隆文件,例如ls
?
3 年零 2 个月后...由于 stackoverflow 上的这个问题,我得到了很多分数。
所以昨天我决定重新讨论这个话题:)。
使用 fcntl 和 F_LOG2PHYS 可以检查文件是否使用相同的物理块。
所以我使用这个想法制作了一个实用程序并将其放在 github 上(https://github.com/dyorgio/apfs-clone-checker)。
这只是第一个版本,但我希望社区可以改进它。
现在也许可以诞生一个使用克隆 APFS 功能删除重复文件的好工具。>:)
您使用的命令不是 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 中,关于这个的一些事情:
我认为这是您不应该使用的 APFS 的内部专有功能。我觉得它是一个相对无用的功能。如果您想拥有两个相同的文件并使用标准 API,请尝试使用硬链接或软链接,或者使用 Apple 别名。