Apple文件系统(APFS)检查文件是否是终端(shell)上的克隆

时间:2017-09-26 04:16:44

标签: shell filesystems macos-high-sierra apfs

使用macOS High Sierra,可以使用新的文件系统:APFS。

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

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

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

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

3 个答案:

答案 0 :(得分:0)

您使用的命令不是APFS文件系统的功能。 CP -c命令调用一个名为“clonefile”的函数,该函数自2015年起成为bsd的一部分(s.Man-Page)

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

因此,如果你克隆一个文件,你可以从Original更改属性,克隆可以有不同的Attributs。

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

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

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

它是一个快照解决方案。关于这一点,在Apple Dev支持案例中:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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

这只是第一个发布版本的人,但我希望社区能够对其进行改进。

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