ทำไม rsync ของฉันช้ามากเมื่อเทียบกับ cp แท้หรือแม้กระทั่ง SCP?


15

ฉันกำลังถ่ายโอนไฟล์จาก Linux ไปยัง Windows 7 ผ่านการเมานท์แชร์ (การแชร์ถูกติดตั้งจาก Windows บน Linux) .. ฉันกำลังคัดลอกข้อมูลจำนวนมาก (เช่นเกือบ TB) จากเครื่องเก่าไปยังเครื่องใหม่ภายใน LAN ของฉัน . ฉันโชคร้ายพอที่ฉันมี 100MBit เท่านั้น โดยธรรมชาติแล้วฉันใช้ rsync อย่างสุ่มสี่สุ่มห้า แต่สงสัยว่าหลังจากหนึ่งวันทำไมมันถึงรู้สึกช้า การเปิดใช้งานเครื่องวัดความคืบหน้าแสดงอัตราการถ่ายโอนของฉันที่ประมาณ 2MB / s

ดังนั้นฉันจึงใช้ไฟล์ขนาดใหญ่ที่เหมาะสม (800MB) และติดตามเวลาการถ่ายโอน (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) ฉันลบไฟล์ระหว่างการรันแต่ละครั้ง
2) scp ผ่าน localhost ไปยังเครื่อง Linux เดียวกันโดยตรงไปยังการแชร์; ไร้ประโยชน์อย่างสมบูรณ์ แต่ให้เมตรความคืบหน้า

การทดสอบนั้นง่ายเหมือน

(cp|scp|rsync) <source> <destination>

ไม่มีอาร์กิวเมนต์พิเศษยกเว้นโฮสต์ / พอร์ตสำหรับ scp ฉันลอง-Wสวิตช์สำหรับ rsync แต่ยกเลิกไปหลังจากผ่านไปสิบนาที rsync 3.0.3 ทำงานบน Lenny เพื่อให้สามารถขัดจังหวะกระบวนการคัดลอกได้ตลอดเวลาและนำฉันไปสู่ ​​rsync ต่อ แต่ตอนนี้ฉันคิดว่าฉันจำเป็นต้องทบทวนข้อกำหนดนี้อย่างจริงจัง

ความแตกต่างใหญ่เป็นไปได้อย่างไร

การปรับปรุง / แก้ไข:

ขอบคุณrschulerฉันสามารถแก้ปัญหานี้ได้: ใช้ rsync daemon แทนการติดตั้ง smb ด้วยเหตุผลด้านประสิทธิภาพ DeltaCopy ดังกล่าวใช้งานได้ แต่เราต้องระวังบางสิ่ง

  • มันเป็น wrapper GUI ที่ดี แต่ถ้ามีอะไรผิดพลาดมันก็ดีที่จะรู้วิธีแก้ไข ดูเหมือนว่าฉันป้อนข้อมูลประจำตัวผู้ใช้ของฉันภายใต้การเรียกใช้บริการ rsync ผิดครั้งแรก แต่ GUI ไม่อนุญาตให้ฉันตั้งค่าใหม่ ฉันคิดว่ามันทำงานเป็นบริการและสามารถตั้งค่าข้อมูลประจำตัวที่เหมาะสมที่นั่น
  • จำเป็นต้องเพิ่มพอร์ตลงในไฟร์วอลล์ด้วยตนเองเพื่ออนุญาตการเชื่อมต่อ
  • รสนิยมส่วนตัว: ตรวจสอบให้แน่ใจว่าการแชร์นั้นได้รับการป้องกันด้วยรหัสผ่านหรือหากไม่มีอาจทำให้มั่นใจได้ว่าบริการจะไม่เริ่มต้นด้วย Windows ในกรณีที่
  • ไบนารี rsync ที่ถูกห่อไม่ใช่พอร์ต Windows ดั้งเดิม แต่สร้างบน cygwin อย่างไรก็ตาม cygwin DLL ที่มีอยู่นั้นไม่สามารถจัดการ UTF8 ได้อย่างถูกต้องและมีอักขระที่ไม่ใช่ ascii ได้รับการแก้ไขจาก DLL http://www.okisoft.co.jp/esc/utf8-cygwin/

หลังจากนั้นคะแนนการโอนเพิ่มขึ้นจาก 2MB / s เป็น ~ 8MB / s; ยอดเยี่ยมอย่างแน่นอน!


คุณลบไฟล์ปลายทางระหว่างการทดสอบแต่ละครั้งหรือไม่ หากไฟล์ปลายทางมีอยู่แล้วและข้อมูลเมตาไม่ถูกต้องจะต้องตรวจสอบทั้งแหล่งที่มาและปลายทาง
Zoredache

@Zoredache: ฉันลบไฟล์ระหว่างการรัน นอกจากนี้ยังมี-Wสวิทช์ควรจะสนใจว่า
เครื่องหมาย

คำตอบ:


18

(การแชร์ถูกติดตั้งจาก Windows บน Linux)

นั่นคือปัญหาของคุณ rsync กำลังทำการตรวจสอบการกลิ้งไปยังปลายทาง หน้าต่างแบ่งปัน คุณกำลังดึงข้อมูลทั้งหมดผ่านเครือข่ายเพื่อคำนวณ checksums (อาจมากกว่าหนึ่งครั้ง)

สิ่งที่คุณต้องทำคือให้ rsync ทำงานกับทั้งสองเครื่อง ด้วยวิธีนี้จะส่งผ่านความแตกต่าง (และเช็คซัม) ผ่านสายเคเบิลเครือข่าย DeltaCopyเป็น rsync แบบเป็นหน้าต่าง มีเอกสารเพียงพอที่จะให้คุณไป

ดูคำตอบที่โหวตให้กับคำถามนี้สำหรับคำอธิบายที่ดีกว่าว่าทำไมฉันคิดว่าคุณอาจใช้ rsync ในทางที่ผิด


บิงโกคำตอบของคุณอาจไม่ตรงประเด็น ขอบคุณมากฉันเรียนบทเรียนของฉัน
ทำเครื่องหมาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.