rsync: --size-only と --ignore-times の違い 質問する

rsync: --size-only と --ignore-times の違い 質問する

2つの選択肢の違いを理解しようとしています

rsync --size-only

そして

rsync --ignore-times

私の理解では、デフォルトでは、rsync はタイムスタンプとファイル サイズの両方を比較して、ファイルを同期するかどうかを決定します。上記のオプションを使用すると、ユーザーはこの動作に影響を与えることができます。

どちらの選択肢も、少なくとも言葉の上では同じ結果になるようです。サイズのみで比較する

ここで何か微妙なことを見逃しているのでしょうか?

ベストアンサー1

簡単に答えると、--ignore-timesその名前が示す以上のことを行います。両方時間とサイズ。対照的に、--size-onlyはまさにその通りの機能を果たします。


長い答えは、rsyncファイルが古くなっているかどうかを判断する方法が 3 つあるということです。

  1. ソースと宛先のサイズを比較します。
  2. 送信元と送信先のタイムスタンプを比較します。
  3. 送信元と送信先の静的チェックサムを比較します。

これらのチェックは、データを転送する前に実行されます。特に、静的チェックサムはストリーム チェックサムとは異なることを意味します。ストリーム チェックサムは、データの転送中に計算されます。

デフォルトでは、rsyncは 1 と 2 のみを使用します。 1 と 2 は 1 つの で一緒に取得できますstatが、 3 ではファイル全体の読み取りが必要です (これは転送用のファイルの読み取りとは無関係です)。 修飾子が 1 つだけ指定されていると仮定すると、次のようになります。

  • を使用すると--size-only、1 のみが実行されます。タイムスタンプとチェックサムは無視されます。ファイルのサイズが両端で同じでない限り、ファイルはコピーされます。

  • を使用すると--ignore-times、1、2、3 のいずれも実行されず、常にファイルがコピーされます。

  • を使用すると--checksum、3は追加1に、しかし2はない実行されます。サイズとチェックサムが一致しない限り、ファイルはコピーされます。チェックサムはサイズが一致する場合にのみ計算されます。

おすすめ記事