いくつかの同期を実行するためにrsyncを使用しています。
rsync --rLvv --times --サイズのみ
私の初期同期のため。私の考えは今、次のものを使用することです。
rsync --rLvv - 時間
新しい修正時間でファイルを同期します。私の問題は、初期のrsync以降に同期されたファイルに次の修正時刻が表示されることです。
リモート$stats6080_04_big.mp4 ファイル:「6080_04_big.mp4」 サイズ: 258788267 ブロック: 505448 IO ブロック: 4096 一般ファイル デバイス: 903h/2307d Inode: 862897 リンク: 1 訪問: (0644/-rw-r--r--) Uid: (2000/ht) Gid: (2000/cust) 接続時間:2010-08-13 10:46:20.000000000 -0700 修正: 2010-08-12 17:55:08.000000000 -0700 変更: 2010-08-13 10:46:20.205721673 -0700
地域$stats6080_04_big.mp4 ファイル:「6080_04_big.mp4」 サイズ: 258788267 ブロック: 505448 IO ブロック: 4096 一般ファイル デバイス: 902h/2306d Inode: 136015 リンク: 1 アクセス: (0664/-rw-rw-r--) Uid: (506/管理者) Gid: (506/管理者) 接続時間:2010-08-12 20:55:01.482104000 -0400 修正: 2010-08-12 20:55:08.468122000 -0400 変更: 2010-08-12 21:15:06.952810711 -0400
修正時間は「事実上」同じですが、わずか数秒に短縮されます。ここで比較される解像度は何ですか? 2秒まで同じものはすべて同じとみなされるようですが、これを明示した文書は見つかりません。知っている人はいますか?
答え1
これは私の質問に対する私の答えです。
rsync は utime() 呼び出しを使用してファイル変更時間を 1 秒の解像度に設定します。したがって、実際には2秒まで同じファイルは、rsyncチェックの時間比較部分で同じと見なされます。
答え2
rsyncドキュメント(rsync.1.md)から:
0. `--modify-window=NUM`, `-@`
When comparing two timestamps, rsync treats the timestamps as being equal
if they differ by no more than the modify-window value. The default is 0,
which matches just integer seconds. If you specify a negative value (and
the receiver is at least version 3.1.3) then nanoseconds will also be taken
into account. Specifying 1 is useful for copies to/from MS Windows FAT
filesystems, because FAT represents times with a 2-second resolution
(allowing times to differ from the original by up to 1 second).
If you want all your transfers to default to comparing nanoseconds, you can
create a `~/.popt` file and put these lines in it:
> rsync alias -a -a@-1
> rsync alias -t -t@-1
With that as the default, you'd need to specify `--modify-window=0` (aka
`-@0`) to override it and ignore nanoseconds, e.g. if you're copying
between ext3 and ext4, or if the receiving rsync is older than 3.1.3.