btrfs send
btrfs receive
と似ていますが、ファイル単位でアクションを作成したいと思います。私が知っている限り、これを使用してcp -ax --reflink=always
ファイルの「スナップショット」を作成できます。 2つの異なるハードドライブ上の2つの「スナップショット」がまったく同じであると仮定します。このように、cp
再リンクされた2つのファイルの違い(および違いのみ)をどのように比較できますか?btrfs send -p
理想的には、btrfsだけでなく、参照リンクが可能なすべてのファイルシステムで動作する解決策をしたいと思います。理想的にはsudoなしで実行したいと思います。
ファイル範囲ビューが利用可能であることはわかっていますが、filefrag
結果filefrag
が正しいことを保証することはできません。ファイルの破損のリスクを負うよりも、数メガバイトをさらにコピーすることをお勧めします。
答え1
解決策が見つかりました(まだテストされていません)。
- ソースディスクに新しいサブボリュームXとサブボリュームYを作成します。
cp -ax --reflink=always
古いバージョンをサブボリュームXにコピーし、新しいバージョンをサブボリュームYにコピーするために使用されます。- (これを初めて実行する場合)を使用して、サブボリュームXを2番目のディスクにコピーするか、
btrfs send
サブボリュームを再作成します。 - コピーサブボリュームYを2番目のディスクに使用します
btrfs send -p
。 - これにより、2番目のディスクのサブボリュームYにあるファイルを再接続し(以前のファイルの交換)、プロセスで使用されているすべてのサブボリュームを削除します。
警告:これがうまくいくかわかりません。実際に期待どおりに機能していることを確認するには、幅広いテストを実行する必要があります。理論的には、サブボリュームの作成が100%再現可能である場合(=同じ操作を2回実行すると同じbtrfsツリーの内部状態が発生する)、動作します。
それでも適切な解決策を持つことができて嬉しいですね。
編集する:もちろん、filefrag
両方のディスクで同じ結果が生成されることを確認できます。