btrfs-sendには、増分バックアップ用の以前のスナップショットを提供する「-p」パラメータがあります。
snap1、snap2、snap3、snap4があるとしましょう。その後、snap2にロールバックします。今btrfs-sendを呼び出すと、以前のスナップショットは何でしたか?スナップショット1またはスナップショット4?
答え1
直接からBTRFS FAQ:
receiveが何をしているのかを見ると、理解するのが最も簡単です。受信は、コマンドストリームを使用して新しいサブボリュームを作成し、コマンドを使用してサブボリュームが転送されるように見えるまでそのサブボリュームを変更します。
-pを使用すると、受信者はそのサブボリュームのスナップショットを撮り、トランスポートストリームを使用してそれを変更します。
通常、すべてのサブボリュームを親ボリュームとして選択できます。ただし、最良の親アイテムは、送信するスナップショットと最小の違いがあるアイテムなので、あなたの例ではsnap2
。
安定した動作を実現するには、次のbtrfs send/receive
条件を考慮する必要があります。
- 親ボリュームとして使用されるサブボリュームはリスナーになければなりません(UUIDによって識別される、参照)。BTRFS - 最後のスナップショットを送信する)
- スナップショットと親エントリは関連している必要があります。つまり、互いのスナップショットまたは共通の親エントリを共有する必要があります。
- 両方のサブボリュームは読み取り専用でなければなりません(参照:
btrfs property set <subvol> ro true
)
親ボリュームを明示的に指定することを省略し、サブボリュームをレプリケーション・ソースとしてリストし、次を使用することもできます。-c
バナー。これは受信側にも必要ですが、btrfs send
最も適切な上位と下位のボリュームを選択しようとします。