如何使用 btrfs 复制文件而不复制其数据?

如何使用 btrfs 复制文件而不复制其数据?

我没有使用 btrfs 的经验,但它被宣传为能够删除重复文件。

在我的应用程序中,我需要复制整个目录树。

据我所知,btrfs 仅在某些扫描后进行重复数据删除,而不是立即进行。即使只是使用似乎cp也不会触发任何重复数据删除(至少df显示复制文件大小的磁盘使用量增加)。

我是否可以避免完全移动数据并btrfs直接告诉在另一个位置复制文件,本质上只是克隆其元数据?

本质上,类似于硬链接,但具有独立的元数据(权限、修改时间……)。

答案1

有两种选择:

  1. cp --reflink=always
  2. cp --reflink=auto

第二种几乎总是优于第一种。使用auto意味着如果文件系统不支持重新链接(例如 ext4 或复制到 NFS 共享),它将回退到执行真实复制。对于第一个选项,我很确定它会彻底失败并停止复制。

如果您将其用作需要在非理想条件下保持稳健的脚本的一部分,那么auto将为您提供更好的服务。

相关内容