假设名为“child-subvol”的btrfs子文块位于另一个子文件中,“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该是快照。
由于btrfs文件系统中还没有递归快照支持,如何实现呢?
答案 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
以前从未为我工作,也可以帮助你发现错误)
尽管你没有保留旧的子体积结构,它应该是快速的,具有与快照相同的优点。