ทำไม rsync -avz เร็วกว่า scp -r


55

ฉันงุนงงกับเรื่องนี้ไหม? เหตุใด rsync จึงเร็วกว่า scp rsync ไม่ใช้ scp ด้านล่างหรือทำสิ่งที่มีประสิทธิภาพมากกว่านี้หรือไม่ มีวิธีการเพิ่มความเร็วของ SCP หรือไม่


1
มันเป็นสำเนาใหม่
grm

คำตอบ:


68

Rsync จะเร็วกว่า scp อย่างชัดเจนหากเป้าหมายมีไฟล์ต้นฉบับบางไฟล์อยู่แล้วเนื่องจาก rsync คัดลอกความแตกต่างเท่านั้น แต่ฉันสงสัยว่าคำถามของคุณเกี่ยวกับการทำสำเนาตรงไปยังเป้าหมายที่ว่างเปล่า

คุณได้ส่ง-zตัวเลือกไปที่rsync; สิ่งนี้จะเปิดการบีบอัด หากแบนด์วิดท์เครือข่ายเป็นปัจจัย จำกัด (บ่อยครั้ง) การบีบอัดสามารถปรับปรุงความเร็วการถ่ายโอนได้ตามจำนวนที่เห็นได้ชัดเจน

นอกจากนี้คุณยังสามารถเปิดใช้งานการบีบอัดด้วยscpโดยผ่าน-Cตัวเลือก สิ่งนี้ควรเกี่ยวกับสิ่งต่าง ๆ ด้วย rsync การบีบอัดไม่ได้เปิดใช้งานโดยค่าเริ่มต้นใน ssh เพราะช่วยประหยัดแบนด์วิดท์ แต่เพิ่มความหน่วงแฝงและโอเวอร์เฮดของ CPU เวลาแฝงไม่ดีสำหรับเซสชันแบบโต้ตอบ (สิ่งนี้ไม่ได้ใช้scp) และค่าใช้จ่ายของ CPU นั้นไม่มีประโยชน์หากไฟล์ที่คุณคัดลอกนั้นถูกบีบอัดอยู่แล้ว

รุ่นเก่าของrsyncrsh ใช้มากกว่า SSH เป็นชั้นการขนส่งเริ่มต้นเพื่อเปรียบเทียบยุติธรรมจะอยู่ระหว่างและrsync rcpแต่ ssh นั้นเป็นค่าเริ่มต้นตั้งแต่ 2.6.0 ที่เผยแพร่ใน 2004-01-01

ด้วยการตั้งค่าการบีบอัดที่เหมือนกันฉันคาดหวังrsyncและscpมีความเร็วเท่ากัน กรุณาแบ่งปันมาตรฐานหากคุณพบว่าเป็นอย่างอื่น


3
เยี่ยมมากการใช้ -C ทำให้ความเร็วในการถ่ายโอนเพิ่มขึ้นจาก 5MB เป็น 20MB
ıɾuɾ

ฉันเพิ่งทดสอบว่าสำหรับไดเรกทอรีที่มี 16 ไฟล์ประมาณ 3-9 MB และrsync -zยังคงเป็นวิธีที่เร็วกว่าscpการบีบอัดใด ๆ ที่แนะนำในคำตอบเหล่านี้เปิดใช้งาน มันยังเร็วกว่าการบีบอัดและจัดเก็บลงในไฟล์เดียวด้วยตนเองและscp'ing ไฟล์นั้น ( scpด้วยการบีบอัดจะยิ่งช้ากว่านั้น) ดังนั้นคำถามของ OP ยังคงไม่มีคำตอบจริง: wth scpนั้นช้ามากเมื่อเทียบกับrsync?
ohcibi

12

ลองใช้ SCP ในวิธีที่รวดเร็ว

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

ตัวเลือกเหล่านี้เพิ่มความเร็ว scp 5 เท่าในการตั้งค่าของฉันเทียบกับเครื่องธรรมดา: ไฟล์

อัปเดต, 2017

จริงๆแล้ว scp ช้าเนื่องจากการจัดการรายละเอียด TCP ไม่ดีเช่น MTU และขนาดบัฟเฟอร์ โชคดีที่โครงการHPN SSHได้รับการแก้ไขแล้ว เพื่อความเข้าใจของฉันคุณสามารถใช้ HPN SSH เป็นวิธีการขนส่งสำหรับ rsync


1
เยี่ยมมากขอบคุณ !! อย่างไรก็ตามมักจะทำscp -p(เก็บรักษาวันที่ / เวลา) เป็นค่าเริ่มต้นและอาจ-r(เรียกซ้ำ) scp -pr -C ...เสมอ (ฉันแค่ต้องขัดและเริ่มงาน scp -p
40Gb

ฉันเพิ่ม -p ไปยังคำสั่งขอบคุณสำหรับคำใบ้
Peter K

4

มันเคยเป็นวิธีอื่น ๆ แต่ฉันเชื่อว่าความเร็วของ rsync ได้รับการปรับปรุงให้ดีขึ้นอย่างมากเมื่อไม่กี่ครั้งที่ผ่านมา ขึ้นอยู่กับจำนวนไฟล์ที่คุณคัดลอก หากเป็นจำนวนมาก rsync มักจะเร็วกว่าเนื่องจาก scp วางกระบวนการใหม่สำหรับแต่ละไฟล์ที่คุณกำลังคัดลอก คุณสามารถลองลดการใช้ตัวเลขศูนย์เพื่อดูว่ามันเร็วขึ้นหรือไม่ ครั้งสุดท้ายที่ฉันจำได้รหัส arcfour นั้นเร็วที่สุด


2
Scp ไม่ได้วางกระบวนการใหม่สำหรับแต่ละไฟล์ที่ถูกคัดลอก คุณมีหนึ่งกระบวนการในด้านการส่งและอีกกระบวนการในด้านการรับเช่นเดียวกับ rsync
Kenster

3

สำหรับไฟล์ขนาดเล็กจำนวนมาก rysnc นั้นเร็วกว่า scp พวกเขาบอกว่าเป็นเพราะมันมีค่าใช้จ่ายน้อย สำหรับไฟล์ขนาดใหญ่หนึ่งไฟล์ฉันคาดหวังผลลัพธ์ที่คล้ายกัน


3

สำหรับการทดสอบของฉันrsyncเร็วกว่าscpคุณสามารถใช้iotopเพื่อทดสอบการถ่ายโอนไฟล์เดียวกัน:

sudo iotop -o

บางทีคุณอาจได้ผลลัพธ์ที่แตกต่างกัน แต่คุณสามารถทดสอบได้ด้วยตนเอง BTW ในขณะที่ใช้scpอย่าตัดการเลือกเลขศูนย์โดย:

scp -c arcfour <source> <dest>

ในขณะที่arcfourสามารถเพิ่มความเร็วในการเข้ารหัส


0

คุณกำลังคัดลอกไฟล์ทับไฟล์เดิมหรือไม่? ถ้าเป็นเช่นนั้นความสามารถของ rsync ในการบล็อกการเปรียบเทียบและคัดลอกความแตกต่างเท่านั้นจะเกี่ยวข้อง

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