私は次のように毎日別のXFSボリュームにファイルをコピーします。
# on monday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/monday/huge.file
# on tuesday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/tuesday/huge.file
これで、disk2にある2つのファイルの合計サイズを占めます。
私が主に使用するのと同じパーティションでは、コピーされたファイルはフラグメントを--reflink=auto
共有し、変更されたブロックのみを占めます。ただし、ターゲットが別のボリュームにある場合は機能しないため、2つの既存のコピーを再接続するソリューションが必要です。
残念ながら、このように変更されたブロックだけをコピーするcp
ことはありませんrsync
(参照接続サポートなし)。それ以外の場合は、次のようにします。
# on monday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/huge.file
cp --reflink=always /mnt/disk2/huge.file /mnt/disk2/monday/huge.file
# on tuesday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/huge.file
cp --reflink=always /mnt/disk2/huge.file /mnt/disk2/tuesday/huge.file
ベストアンサー1
xfsについてはわかりませんが、btrfsにはこれを行う重複排除コマンドがあります。バラよりhttps://btrfs.wiki.kernel.org/index.php/Deduplication
レプリカとは無関係に重複排除ステップを実行できます。
要求された操作を直接実行するには、プロセスを元に戻すことができます。
それは次のとおりです。
昨日のコピーから参照リンクを作成してベースラインを作成する
cp --reflink=always/mnt/disk2/monday/huge.file /mnt/disk2/tuesday/huge.file
別の場所からソースファイルを読み、更新内容を直接作成します。例:
rsync --inplace --no-whole-file /mnt/disk1/huge.file /mnt/disk2/tuesday/huge.file
月曜日と火曜日のバックアップの間に、必要に応じて変更されていないブロックのみが共有されることを願っています。
警告:私はこれを試していないし、それが実際にあなたが望むことをするかどうかわかりません。
これは関係ないかもしれませんが、rsyncに直接reflinkサポートを追加することについて議論されています。望むより:
- https://github.com/WayneD/rsync/issues/153
- https://www.reddit.com/r/btrfs/comments/ijby0b/does_rsync_support_reflinks_for_btrfs/
何が問題なのかよく分からない。