如何获取btrfs subvol的递归快照?

时间:2014-07-08 07:09:17

标签: c linux ubuntu filesystems btrfs

假设名为“child-subvol”的btrfs子文块位于另一个子文件中,“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该是快照。

由于btrfs文件系统中还没有递归快照支持,如何实现呢?

3 个答案:

答案 0 :(得分:0)

我也一直在想这个,并且无法在网上找到任何推荐的最佳做法。应该可以编写脚本来创建处理递归的快照。

答案 1 :(得分:0)

第1步: 获取所有驻留的btrfs子卷。优选地,按照以下命令实现的排序顺序。

$ btrfs子卷列表 - sort = -path < top_subvol>

第2步: 按照获得的首选顺序,执行删除/快照操作。

$ btrfs subvolume delete< subvol-name>

答案 2 :(得分:0)

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

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

或者,您可以

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

--reflink=auto以前从未为我工作,也可以帮助你发现错误)

尽管你没有保留旧的子体积结构,它应该是快速的,具有与快照相同的优点。