C语言 如何对btrfs子卷进行递归快照



假设一个名为"child-subvol"的btrfs子卷位于另一个名为"root-subvol"的子卷中,如果我们对"root-subvol"进行快照,那么也应该对"child-subvol"进行快照。

由于btrfs文件系统中还不支持递归快照,那么如何替代它呢?

第一步:获取所有驻留的btrfs子卷。最好按照下面命令实现的排序顺序。

$ btrfs子卷列表——sort=-path

步骤2:根据查询到的优先级顺序,执行删除/快照操作。

$ BTRFS子卷delete

我也一直在想这个问题,但在网上找不到任何推荐的最佳实践。应该可以编写一个脚本来创建处理递归的快照。

正如Peter R所建议的,您可以编写一个脚本。但是,如果要发送子卷,则必须将其标记为只读,并且不能递归地快照到只读卷中。

为了解决这个问题,您可以在处理递归的脚本中使用btrfs-property(通过这个答案找到),使它(在所有快照被拍摄之后)将快照标记为只读,以便您可以发送它们。

或者,您可以执行

cp -a --reflink=always /path/to/root_subvol/ /path/to/child_subvol/

(--reflink=auto以前从未为我工作过,也可以帮助您捕获错误)

它应该很快,并且具有与快照相同的优点,尽管您不需要保留旧的子卷结构。

相关内容

  • 没有找到相关文章

最新更新