btrfs-send 有“-p”参数,为增量备份提供以前的快照。
假设我有 snap1、snap2、snap3 和 snap4:然后我回滚到 snap2。如果我现在调用 btrfs-send,之前的快照是什么?快照1还是快照4?
答案1
直接从BTRFS常见问题解答:
如果你看看 receive 的作用,就最容易理解了。接收采用指令流,创建一个新的子卷,并使用指令修改该子卷,直到它看起来像正在发送的子卷。
当你使用-p时,接收方会对相应的subvol进行快照,然后使用发送流对其进行修改。
通常,您可以选择任何子卷作为父卷。不过,最好的父级将是与您要发送的快照差异最小的父级,因此在您的示例中,这将是snap2
.
为了btrfs send/receive
可靠地工作,您应该考虑以下条件:
- 用作父卷的子卷必须存在于接收方(由 UUID 标识,请参阅BTRFS-发送上一个快照)
- 快照和父级需要相关,即要么是彼此的快照,要么共享一个共同的父级
- 两个子卷都需要是只读的(请参阅
btrfs property set <subvol> ro true
)
您还可以省略显式指定父卷,而仅将子卷列为克隆源,并使用-c
旗帜。这些也需要存在于接收端,但btrfs send
会尝试为您选择最合适的父子卷。