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秒である理由を知りたいのです(わざわざ確認した限り)。
ファイルシステムは時間を異なる方法で処理できることを知っているので、これが不一致の原因である可能性があります。 --modify-windowを使用して、mod-time比較のしきい値を調整できます。
# Ignore up to a 5 second difference. Tighten up as desired.
rsync --modify-window=5 do whatever...
楽しい