如何在不使用 btrfs 复制其数据的情况下复制文件?

Udo*_*o G 15 cp file-copy btrfs deduplication

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

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

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

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

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

ees*_*ada 15

有两种选择:

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

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

如果您将此作为脚本的一部分使用,该脚本在面对非理想条件时需要保持稳健,这auto将为您提供更好的服务。

  • @mikeserv 哈哈,不。我的名字是伊森。不过那会很有趣;Eric Estrada:白天是演员,晚上是系统管理员。信不信由你,这是十多年来第一次有人问我这个问题。 (3认同)
  • 当然,埃里克。无论如何,很好的答案。 (2认同)
  • @Matt只要你知道你的别名将始终在相对较新版本的GNU用户区上运行,我个人认为使用“alias cp='cp --reflink=auto'”没有任何害处。 (2认同)