rsyncが「ファイル名の変更」を正常に処理しないというのは本当ではありませんか?

rsyncが「ファイル名の変更」を正常に処理しないというのは本当ではありませんか?

バックアップツールを使用する場合duplicity、私は気づいた。ソースからファイルの名前を変更すると、データはネットワーク経由でターゲットに転送されます。、ちょっと残念です。内部duplicity使用のためにlibrsync見てみることにしましたrsync

これ建築wikiページ状態:

ハンドルの名前変更
移動または名前変更されたファイルは検出され、2回保存または転送されません。これは通常、ファイルまたはそのブロックのチェックサムを計算することを意味します。この機能が不足しているアプリケーションは、次の機能を組み合わせて補完することができます。hsyncAUR、同期名変更専用です。

rsync: ハンドルの名前変更: いいえ

これが本当に意味するのは、使用時にrsync10GBがネットワーク経由で宛先に再送信されるのを防ぐ方法はありません。、ソースマシンの名前を次のように変更すると/test/10GBfile/test/10GBfile_newname

の長い人気を考えると、rsyncこれを処理するより良い方法はありますか?

ベストアンサー1

rsync実行時以外は状態を維持しないため、名前の変更を追跡するメカニズムはありません。元のマシンでに名前を変更すると、デフォルトでは/test/10GBfile削除されたアイテムと生成されたアイテムのみが表示されます。/test/10GBfile_newnamersync10GBfile10GBfile_newname

パラメータ--fuzzy()は、ターゲット上の潜在的なデータソース-yを識別するのに役立ち、ファイルコピーの代わりにネットワークコピーを防ぐことができます。ただし、(ほとんど)ファイルの一致のみを考慮できます。10GBfile10GBfile_newname同じディレクトリにしたがって、あなたの例は一致しますが、名前を変更/test/10GBfileすると/test/otherdir/10GBfile_newnameそうではありません。

また、マニュアル(man rsync)は、使用する予定の場合、または使用する前に潜在的な一致が削除されないように使用する--delete必要があることを示唆しています。--delay-updates--delete-after--fuzzy

はい

# Prepare an uncompressible 100MB file
mkdir -p /tmp/test
dd bs=1M count=100 iflag=fullblock if=/dev/urandom >/tmp/test/file1

# Normal first-time copy
rsync -av --fuzzy --delete-after /tmp/test/ remote:/tmp/test

# Skip copy because unchanged
rsync -av --fuzzy --delete-after /tmp/test/ remote:/tmp/test

# Rename file (per your example)
mv /tmp/test/file1 /tmp/test/file2

# Fast copy because fuzzy match
rsync -av --fuzzy --delete-after /tmp/test/ remote:/tmp/test

進行状況のブロック固有の詳細を表示するには、2つの-vフラグ(たとえば)を追加します。rsync -avvv …

おすすめ記事