持つ一部記事とツールネットワークを介したスナップショットの差分同期BTFS。
私の質問には以下が含まれます。ガイド増分プロセス。
同様の方法を使用してバックアップディレクトリを設定すると、スナップショットの増分バックアップを開始できます。
(src)$ sudo btrfs send initial_snapshot -f somedir/initial_snapshot.data"
(dst)$ sudo btrfs receive initial_snapshot -f somedir/initial_snapshot.data"
src
(およびdst
が他のブロックデバイスまたは他のシステムにあると仮定)。
同期サブボリュームから起動する方法はありますかrsync
?つまり、この方法でブートストラップ差分同期を実行できますか?
素朴な方法でこれを実行すると(すべてのスナップショットを同期して読み取りsrc
専用スナップショットを作成する)、次のエラーが発生します。dst
rsync
btrfs error: can not find parent snapshot
はい、わかります。
しかし、btrfsに同じデータがsrc
含まれており、増分スナップショットの親エントリとして使用できることを「確信」する方法はありますか?dst
initial_snapshot
答え1
残念ながら、送受信以外の方法では指示できません。送受信のための増分転送は、次の2つの点によって異なります。
- ターゲットボリュームの関連サブボリュームの「Received UUID」属性は、ソース内の対応するサブボリュームの「UUID」属性と正確に一致する必要があります。これは命令を利用すれば簡単に確認できますが
btrfs subvolume show
、これらの値を直接修正する以外に設定できる方法はありません。 - 増分転送に使用される上位サブボリュームのブロックは、ソースと宛先の間で一致する必要があります。つまり、ファイルXを変更する増分更新を送信する場合、ターゲットボリューム上のファイルXの以前のバージョンのコピーは、ソースボリューム上のファイルXの元のコピーと同じでなければなりません。厳密には、
rsync
スナップショット以外の関連参照リンクがない場合(つまり、ソーススナップショットの親ボリュームとサブボリューム内のエントリにCLONE_RANGEまたはEXTENT_SAME ioctlが使用されていない場合)、この要件を満たす必要があります。
理論的には、両方の制約を解決することは実際には可能ですが、そうするにはかなりの努力が必要であり、BTRFSに関する非常に低いレベルの知識が必要です。極度に危険)。