我没有使用 btrfs 的经验,但它被宣传为能够删除重复文件。
在我的应用程序中,我需要复制整个目录树。
据我所知,btrfs 仅在某些扫描后进行重复数据删除,而不是立即进行。即使只是使用似乎cp
也不会触发任何重复数据删除(至少df
显示复制文件大小的磁盘使用量增加)。
我是否可以避免完全移动数据并btrfs
直接告诉在另一个位置复制文件,本质上只是克隆其元数据?
本质上,类似于硬链接,但具有独立的元数据(权限、修改时间……)。
答案1
有两种选择:
cp --reflink=always
cp --reflink=auto
第二种几乎总是优于第一种。使用auto
意味着如果文件系统不支持重新链接(例如 ext4 或复制到 NFS 共享),它将回退到执行真实复制。对于第一个选项,我很确定它会彻底失败并停止复制。
如果您将其用作需要在非理想条件下保持稳健的脚本的一部分,那么auto
将为您提供更好的服务。