2つの選択肢の違いを理解しようとしています
rsync --size-only
そして
rsync --ignore-times
私の理解では、デフォルトでは、rsync はタイムスタンプとファイル サイズの両方を比較して、ファイルを同期するかどうかを決定します。上記のオプションを使用すると、ユーザーはこの動作に影響を与えることができます。
どちらの選択肢も、少なくとも言葉の上では同じ結果になるようです。サイズのみで比較する。
ここで何か微妙なことを見逃しているのでしょうか?
ベストアンサー1
簡単に答えると、--ignore-times
その名前が示す以上のことを行います。両方時間とサイズ。対照的に、--size-only
はまさにその通りの機能を果たします。
長い答えは、rsync
ファイルが古くなっているかどうかを判断する方法が 3 つあるということです。
- ソースと宛先のサイズを比較します。
- 送信元と送信先のタイムスタンプを比較します。
- 送信元と送信先の静的チェックサムを比較します。
これらのチェックは、データを転送する前に実行されます。特に、静的チェックサムはストリーム チェックサムとは異なることを意味します。ストリーム チェックサムは、データの転送中に計算されます。
デフォルトでは、rsync
は 1 と 2 のみを使用します。 1 と 2 は 1 つの で一緒に取得できますstat
が、 3 ではファイル全体の読み取りが必要です (これは転送用のファイルの読み取りとは無関係です)。 修飾子が 1 つだけ指定されていると仮定すると、次のようになります。
を使用すると
--size-only
、1 のみが実行されます。タイムスタンプとチェックサムは無視されます。ファイルのサイズが両端で同じでない限り、ファイルはコピーされます。を使用すると
--ignore-times
、1、2、3 のいずれも実行されず、常にファイルがコピーされます。を使用すると
--checksum
、3は追加1に、しかし2はない実行されます。サイズとチェックサムが一致しない限り、ファイルはコピーされます。チェックサムはサイズが一致する場合にのみ計算されます。