名前は同じですが、変更時間が異なる2つのディレクトリを作成する場合:
$ mkdir -p dir1/dir ; sleep 2 ; mkdir -p dir2/dir
$ stat -c %y dir*/dir
2021-09-15 10:54:55.000819360 +0100
2021-09-15 10:54:57.007490593 +0100
その後、オプションrsync
と一緒に使用します。--size-only
$ rsync -rtvh --size-only dir1/ dir2/
sending incremental file list
./
dir/
sent 72 bytes received 23 bytes 190.00 bytes/sec
total size is 0 speedup is 0.00
寸法は同じなので、どんな変化も期待しません。ただし、修正時間はdir2/dir
変更されます。
$ stat -c %y dir*/dir
2021-09-15 10:54:55.000819360 +0100
2021-09-15 10:54:55.000819360 +0100
これは、ファイルサイズが同じでも発生します。
なぜこのようなことをするのですか?
これは、ディレクトリに多くのデータ(他のネストされたディレクトリとファイル)が含まれている場合にも発生する可能性があります。ディレクトリが実際に上書きされたのか、それともrsyncがタイムスタンプを更新しましたか?
答え1
Rsyncは、ユーザーが要求したフラグと一致するようにメタデータのみを更新します-t
。
マニュアルを参照してください(を入力man rsync
)、次のガイドラインをお読みください。
Rsyncは、サイズまたは最後の変更時間が変更されたファイルを検索する「クイックチェック」アルゴリズム(デフォルト)を使用して、転送する必要があるファイルを見つけます。クイックスキャンの結果、ファイルのデータを更新する必要がないことが表示された場合は、オプションで要求されたように保持されている他のプロパティへの変更がターゲットファイルに直接適用されます。
この--size-only
フラグはこの「クイックチェック」アルゴリズムのみを変更し、ファイルを完全にスキップするわけではありません。
- サイズのみ
これは、rsyncが転送する必要があるファイルを見つけるために使用する「クイックチェック」アルゴリズムを変更し、サイズまたは最後の変更時間が変更されたファイルのデフォルト転送からサイズ変更されたファイルのみを取得するように変更します。これは、タイムスタンプを正確に保存できない可能性がある他のミラーリングシステムを使用した後にrsyncの使用を開始するときに便利です。