이름은 같지만 수정 시간이 다른 두 개의 디렉터리를 만드는 경우:
$ mkdir -p dir1/dir ; sleep 2 ; mkdir -p dir2/dir
$ stat -c %y dir*/dir
2021-09-15 10:54:55.000819360 +0100
2021-09-15 10:54:57.007490593 +0100
그런 다음 옵션 rsync
과 함께 사용하십시오.--size-only
$ rsync -rtvh --size-only dir1/ dir2/
sending incremental file list
./
dir/
sent 72 bytes received 23 bytes 190.00 bytes/sec
total size is 0 speedup is 0.00
치수는 동일하기 때문에 어떤 변화도 기대하지 않습니다. 그러나 수정 시간은 dir2/dir
변경됩니다.
$ stat -c %y dir*/dir
2021-09-15 10:54:55.000819360 +0100
2021-09-15 10:54:55.000819360 +0100
이는 파일 크기가 동일한 경우에도 발생합니다.
왜 이런 일을 하는가?
이는 디렉터리에 많은 데이터(다른 중첩된 디렉터리 및 파일)가 포함된 경우에도 발생할 수 있습니다. 디렉토리가 실제로 덮어씌워졌습니까, 아니면 rsync가 타임스탬프를 업데이트했습니까?
답변1
Rsync는 사용자가 요청한 플래그와 일치하도록 메타데이터만 업데이트합니다 -t
.
설명서를 보면( 을 입력 man rsync
) 다음 지침을 읽어보세요.
Rsync는 크기나 마지막 수정 시간이 변경된 파일을 찾는 "빠른 확인" 알고리즘(기본값)을 사용하여 전송해야 하는 파일을 찾습니다. 빠른 검사 결과 파일의 데이터를 업데이트할 필요가 없음이 나타나면 옵션에서 요청한 대로 유지된 다른 속성에 대한 변경 사항이 대상 파일에서 직접 적용됩니다.
이 --size-only
플래그는 이 "빠른 확인" 알고리즘만 변경하며 파일을 완전히 건너뛰지는 않습니다.
--크기만
이는 rsync가 전송해야 할 파일을 찾는 데 사용하는 "빠른 확인" 알고리즘을 수정하여 크기나 마지막 수정 시간이 변경된 파일의 기본 전송에서 크기가 변경된 파일만 검색하도록 변경합니다. 이는 타임스탬프를 정확하게 보존하지 못할 수 있는 다른 미러링 시스템을 사용한 후 rsync 사용을 시작할 때 유용합니다.