假设名为“child-subvol”的 btrfs 子卷位于另一个子卷中,例如“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该被拍摄快照。
由于 btrfs 文件系统中还没有递归快照支持,如何实现呢?
假设名为“child-subvol”的 btrfs 子卷位于另一个子卷中,例如“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该被拍摄快照。
由于 btrfs 文件系统中还没有递归快照支持,如何实现呢?
第 1 步:获取所有驻留的 btrfs 子卷。最好按照以下命令实现的排序顺序。
$ btrfs 子卷列表--sort=-path < top_subvol >
步骤2:按照获得的优先顺序,执行删除/快照操作。
$ btrfs subvolume delete < subvol-name >
我也一直想知道这一点,并且无法在网上找到任何推荐的最佳实践。应该可以编写脚本来创建处理递归的快照。
正如 Peter R 建议的那样,您可以编写一个脚本。但是,如果要发送子卷,则必须将其标记为只读,并且不能递归地快照到只读卷中。
为了解决这个问题,您可以在处理递归的脚本中使用btrfs-property(通过这个 answear找到),使其(在拍摄所有快照之后)将快照标记为只读,以便您可以发送它们。
或者,你可以做
cp -a --reflink=always /path/to/root_subvol/ /path/to/child_subvol/
(--reflink=auto
以前从未为我工作过,也可以帮助您发现错误)
它应该很快,并且具有与快照相同的优势,尽管您不保留旧的子卷结构。