rsync の動作がよくわかりません。私が実行したことと期待したことは次のとおりです。
「sbck」と「dbck」という名前の2つのフォルダーを作成しました。
シナリオ 1:
という名前のファイルを作成しa.txt
、 を使用してそのコピーを作成しましたcp -rp a.txt aa.txt
。両方のファイルをsbck
フォルダーに配置しました。次に、 を実行しましたrsync -rvch sbck/ dbck/
。これにより、両方のファイルが dbck に移動されました。
質問: a.txt と aa.txt はどちらも同じなのに、なぜ rsync はこのコピーを許可するのでしょうか? どちらか一方だけが許可されるべきではないでしょうか?
シナリオ2:
という名前のファイルを作成しa.txt
、 を使用してそのコピーを作成しましたcp -rp a.txt aa.txt
。両方のファイルをsbck
フォルダに配置しました。次に、 を実行しましたcp -rp sbck/a.txt dbck/
。その後、 を実行しましたrsync -rvch sbck/ dbck/
。これにより、 がaa.txt
dbck に移動されました。
質問: a.txt と aa.txt は同じで、すでに a.txt を dbck に移動しました。なぜ rsync は aa.txt を dbck にコピーすることを許可するのでしょうか? このシナリオでは -c はどのように役立つのでしょうか?
答え1
-c
何をするかについて誤解していると思います。rsync
オプションの有無にかかわらず、ファイルの重複排除は行われません-c
。行われるのは、宛先でファイルを更新する必要があるかどうかを決定する-c
方法を変更することだけですrsync
。
およびsbck/a.txt
でdbck/a.txt
、 を実行するとしますrsync -rvh sbck/ dbck/
(注:-c
オプションなし)。では、これら 2 つのファイルのサイズと変更時刻が比較され、一致する場合はファイルの内容も一致すると想定され、へのrsync
コピーは行われません。sbck/a.txt
dbck/a.txt
ここで、rsync -rvch sbck/ dbck/
(この時間で-c
) を実行するとします。今回は、は とrsync
のチェックサムを計算し、それら (サイズと変更時間ではなく) を使用して、ファイルが同じかどうか、したがって の新しい内容を にコピーする必要がないかどうかを判断します。 のチェックサムは、ソース ツリーまたは宛先ツリーの他のファイルのチェックサムと比較されません。sbck/a.txt
dbck/a.txt
sbck/a.txt
dbck/a.txt
sbck/a.txt