rsync에 두 개의 로컬 경로를 전달하면 기본적으로 델타 전송이 아닌 "-전체 파일"을 사용합니다. 그래서, 당신이 찾고있는 것은 "-전체 파일"입니다. '-c'를 요청하면 델타 전송도받을 수 있습니다.
확인 방법은 다음과 같습니다.
$ mkdir a b
$ dd if=/dev/zero of=a/1 bs=1k count=64
$ dd if=/dev/zero of=a/2 bs=1k count=64
$ dd if=/dev/zero of=a/3 bs=1k count=64
$ rsync -av a/ b/
sending incremental file list
./
1
2
3
sent 196831 bytes received 72 bytes 393806.00 bytes/sec
total size is 196608 speedup is 1.00
그런 다음 파일을 터치하고 다시 동기화
$ touch a/1
$ rsync -av --inplace a/ b/
sending incremental file list
1
sent 65662 bytes received 31 bytes 131386.00 bytes/sec
total size is 196608 speedup is 2.99
"ls -li"로 inode를 재사용했는지 확인할 수 있지만 전체 64K 바이트를 보냈습니다. --no-whole-file로 다시 시도하십시오
$ touch a/1
$ rsync -av --inplace --no-whole-file a/ b/
sending incremental file list
1
sent 494 bytes received 595 bytes 2178.00 bytes/sec
total size is 196608 speedup is 180.54
이제 494 바이트 만 보냈습니다. strace를 사용하여 파일이 작성되었는지 여부를 추가로 확인할 수 있지만, 최소한 사용 된 델타 전송이 표시됩니다.
로컬 파일 시스템의 경우 --whole-file
는 가정합니다 ( 주석 참조) (rsync에 대한 매뉴얼 페이지 참조). 반면에 네트워크 --no-whole-file
를 통한 것으로 가정하면 --inplace
자체적으로로 동작합니다 --inplace --no-whole-file
.