btrfs増分スナップショット同期:rsyncで起動

btrfs増分スナップショット同期:rsyncで起動

持つ一部記事とツールネットワークを介したスナップショットの差分同期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専用スナップショットを作成する)、次のエラーが発生します。dstrsync

btrfs error: can not find parent snapshot

はい、わかります。

しかし、btrfsに同じデータがsrc含まれており、増分スナップショットの親エントリとして使用できることを「確信」する方法はありますか?dstinitial_snapshot

ベストアンサー1

残念ながら、送受信以外の方法では指示できません。送受信のための増分転送は、次の2つの点によって異なります。

  1. ターゲットボリュームの関連サブボリュームの「Received UUID」属性は、ソース内の対応するサブボリュームの「UUID」属性と正確に一致する必要があります。これは命令を利用すれば簡単に確認できますがbtrfs subvolume show、これらの値を直接修正する以外に設定できる方法はありません。
  2. 増分転送に使用される上位サブボリュームのブロックは、ソースと宛先の間で一致する必要があります。つまり、ファイルXを変更する増分更新を送信する場合、ターゲットボリューム上のファイルXの以前のバージョンのコピーは、ソースボリューム上のファイルXの元のコピーと同じでなければなりません。厳密には、rsyncスナップショット以外の関連参照リンクがない場合(つまり、ソーススナップショットの親ボリュームとサブボリューム内のエントリにCLONE_RANGEまたはEXTENT_SAME ioctlが使用されていない場合)、この要件を満たす必要があります。

理論的には、両方の制約を解決することは実際には可能ですが、そうするにはかなりの努力が必要であり、BTRFSに関する非常に低いレベルの知識が必要です。極度に危険)。

おすすめ記事