ฉันกำลังทำการเปลี่ยนแปลงเล็กน้อยในไฟล์รูปภาพขนาดใหญ่มาก (แตกต่างกันเพียงไม่กี่พิกเซล) ซึ่งใช้เวลานานในการถ่ายโอนผ่านเครือข่าย
มีวิธีการ rsync ในการระบุความแตกต่างในไฟล์และส่งความแตกต่างเล็ก ๆ ผ่านเครือข่ายหรือไม่?
ฉันกำลังทำการเปลี่ยนแปลงเล็กน้อยในไฟล์รูปภาพขนาดใหญ่มาก (แตกต่างกันเพียงไม่กี่พิกเซล) ซึ่งใช้เวลานานในการถ่ายโอนผ่านเครือข่าย
มีวิธีการ rsync ในการระบุความแตกต่างในไฟล์และส่งความแตกต่างเล็ก ๆ ผ่านเครือข่ายหรือไม่?
คำตอบ:
rsync
อัลกอริทึมการถ่ายโอนเดลต้าทำสิ่งนี้ตามค่าเริ่มต้น การอ้างอิงrsync manpage :
รายละเอียด
Rsync เป็นเครื่องมือคัดลอกไฟล์ที่รวดเร็วและหลากหลายเป็นพิเศษ มันสามารถคัดลอกโลคัลไปยัง / จากโฮสต์อื่นผ่านเปลือกระยะไกลใด ๆ หรือไป / จากระยะไกล rsync daemon มันมีตัวเลือกจำนวนมากที่ควบคุมลักษณะการทำงานทุกด้านและอนุญาตให้มีการกำหนดคุณสมบัติที่ยืดหยุ่นของชุดไฟล์ที่จะคัดลอก มันมีชื่อเสียงสำหรับอัลกอริทึมการถ่ายโอนเดลต้าซึ่งลดจำนวนข้อมูลที่ส่งผ่านเครือข่ายโดยการส่งความแตกต่างระหว่างไฟล์ต้นฉบับและไฟล์ที่มีอยู่ในปลายทางเท่านั้น Rsync ใช้กันอย่างแพร่หลายสำหรับการสำรองข้อมูลและการมิเรอร์และเป็นคำสั่งคัดลอกที่ดีขึ้นสำหรับการใช้ชีวิตประจำวัน
หากคุณต้องการปิดการใช้งานคุณจะต้องใช้-W
หรือ--whole-file
ตัวเลือก
-W, - ทั้งไฟล์
ตัวเลือกนี้จะปิดการใช้งานอัลกอริทึมของการถ่ายโอนเดลต้าของ rsync ซึ่งทำให้ไฟล์ที่ถ่ายโอนทั้งหมดถูกส่งทั้งหมด การถ่ายโอนอาจเร็วขึ้นหากตัวเลือกนี้ใช้เมื่อแบนด์วิดท์ระหว่างเครื่องต้นทางและปลายทางสูงกว่าแบนด์วิดท์ไปยังดิสก์ (โดยเฉพาะอย่างยิ่งเมื่อ "ดิสก์" เป็นระบบไฟล์เครือข่ายจริง) นี่คือค่าเริ่มต้นเมื่อทั้งต้นทางและปลายทางถูกระบุเป็นเส้นทางท้องถิ่น แต่ถ้าไม่มีตัวเลือกการเขียนแบทช์ที่มีผลบังคับใช้
หากคุณรู้ว่าไฟล์ของคุณมีการเปลี่ยนแปลงมากน้อยเพียงใดคุณสามารถปรับพฤติกรรมการถ่ายโอนเดลต้านี้ได้โดยปรับขนาดบล็อกเดลต้าของคุณ:
-B, --block-size = BLOCKSIZE
สิ่งนี้บังคับขนาดบล็อกที่ใช้ในอัลกอริทึมการถ่ายโอนเดลต้าของ rsync ให้เป็นค่าคงที่ โดยทั่วไปจะถูกเลือกตามขนาดของแต่ละไฟล์ที่กำลังอัปเดต ดูรายงานทางเทคนิคสำหรับรายละเอียด
และถ้าคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึมคุณสามารถค้นหาได้ที่นี่: อัลกอริทึม Rsync
rsync
จะทำงานด้วยวิธีนี้ตามค่าเริ่มต้น ตราบใดที่การเปลี่ยนแปลงเล็กน้อยเป็นการเปลี่ยนแปลงเล็กน้อยของไฟล์และไฟล์นั้นมีอยู่แล้วทั้งสองด้านของลิงค์ในรุ่นใกล้เคียงกันข้อมูลที่ถ่ายโอนควรมีขนาดน้อยกว่าขนาดไฟล์ทั้งหมด จากย่อหน้าแรกใน man page: "มันมีชื่อเสียงสำหรับอัลกอริทึมการถ่ายโอนของเดลต้าซึ่งช่วยลดปริมาณข้อมูลที่ส่งผ่านเครือข่ายโดยการส่งความแตกต่างระหว่างไฟล์ต้นฉบับและไฟล์ที่มีอยู่ในปลายทาง"