일부 동기화를 수행하기 위해 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.