หากคุณส่ง 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" อีกครั้ง แต่ให้สังเกตว่ามันส่งทั้งไบต์ 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