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