web-dev-qa-db-ja.com

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

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

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

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

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

ls -lT(osx)は、ファイル間の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

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

5
barrrista

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

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

楽しい

10
Alex Atkinson