我正在阅读rmlint
手册,其中一个重复的处理程序是克隆和重新链接:
· 克隆:仅限 btrfs。尝试使用 BTRFS_IOC_FILE_EXTENT_SAME ioctl(3p) 克隆这两个文件。这将物理删除重复的范围。至少需要内核 4.2。
· reflink:尝试将重复文件重新链接到原始文件。另请参见 man 1 cp 中的 --reflink。如果文件系统不支持它会失败。
这个克隆究竟做了什么,它与反射链接有什么不同?BTRFS_IOC_FILE_EXTENT_SAME ioctl 做什么?
差异有些微妙。
Reflink 删除重复文件并在其位置创建一个新文件,该文件是原始文件的克隆。副本的元数据丢失了,尽管 rmlint 尽最大努力通过使用
touch -mr
.克隆使用 BTRFS_IOC_FILE_EXTENT_SAME ioctl(或者,在最新版本中,FIDEDUPERANGE ioctl),它要求内核检查文件是否相同,如果是,则使它们共享相同的数据范围。他们保留原始元数据。它可以说比 reflink 更安全,因为它是由内核自动完成的,并且因为它检查文件是否仍然相同。