ファイルのタイムスタンプが異なるため (1 秒ずれている?)、rsync はすべてのファイルを再送信しています。

ファイルのタイムスタンプが異なるため (1 秒ずれている?)、rsync はすべてのファイルを再送信しています。

私は rsync を使用して、Mac ラップトップから Windows ラップトップの USB ドライブ (exFAT) にファイルをバックアップしています。USB ドライブはホーム ネットワーク内で共有され、Mac にマウントされています。

何も変更していないのに、rsync がすべてのファイルを再送信しているという奇妙な問題に気付きました。

オンにすると、すべてのファイルの出力にそれが表示され、ファイルのタイムスタンプが再送信の理由であったことが--itemize-changesわかります。t

>f..t.... netstat.txt

ls -lT(macOS) 秒形式のタイムスタンプが表示され、ファイル間の 1 秒の差が示され、ソースの方が新しいことが示されました。

$ ls -lT source/file.txt 
-rwxr-----  1 user  group  1176 Sep 19 22:32:59 2014 file.txt
$ ls -lT destination/file.txt 
-rwx------  1 user  group  1176 Sep 19 22:32:58 2014 file.txt

rsync にオプションを追加すると、-cタイムスタンプの差が無視され、不要な転送がスキップされます。ただし、ソース ファイルとターゲット ファイルのタイムスタンプの差が 1 秒である理由を知りたいです (確認した限りでは)。

答え1

ファイル システムによって時間の処理方法が異なる場合があることは承知していますが、これが不一致の原因である可能性があります。 を使用して、変更時刻の比較のしきい値を調整できます--modify-window

# Ignore up to a 5 second difference. Tighten up as desired.
rsync --modify-window=5 do whatever...

詳細はRsync のマニュアルページ

--ウィンドウを変更する

2 つのタイムスタンプを比較する場合、rsync は、それらのタイムスタンプの差が変更ウィンドウ値以下であれば、それらを等しいものとして扱います。これは通常 0 (完全一致の場合) ですが、状況によってはこれをより大きな値に設定すると便利な場合があります。特に、MS Windows FAT ファイルシステム (2 秒の解像度で時間を表す) との間で転送する場合、--modify-window=1便利です (最大 1 秒の時間の差を許容します)。

関連情報