เร่งความเร็ว / หลีกเลี่ยงการคำนวณรายการไฟล์ rsync


12

ผมใช้ rsync 3.1.1 เพื่อให้ในการซิงค์สองแผ่นหนึ่งซึ่งอยู่ในเครือข่ายและการติดตั้งเป็นส่วนแบ่ง samba /mnt/ROUTER_WD_2TB/บน นี่คือแหล่งที่มาด้วยความเร็วสูงสุด 30-40MB / s เนื่องจากข้อ จำกัด ของเครือข่าย อื่น ๆ ปลายทางจะติดตั้งอยู่ในประเทศ (110MB สูงสุด / s) /mnt/BACKUP_HITACHI_2TB/และเป็น

ฉันใช้คำสั่ง rsync ต่อไปนี้:

rsync  -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.

ดิสก์มีไฟล์จำนวนมากโดยส่วนใหญ่มีขนาดเล็ก

ปัญหาคือ rsync ใช้เวลาค่อนข้างนาน (10-20m) ก่อนที่จะเริ่มย้ายไฟล์ใด ๆ ฉันคิดว่าเพราะต้องคำนวณรายชื่อไฟล์สำหรับไฟล์ขนาดเล็กจำนวนมาก ในช่วงเวลานี้การใช้ประโยชน์จากงานใหม่จะอยู่ที่ระดับต่ำ 200-500KB / s ในขณะที่การถ่ายโอนไฟล์ความเร็วประมาณ 40MB / s

มักจะเกิดขึ้นที่ rsync ใช้เวลาประมาณ 15m ในที่สุดก็จะพบสิ่งที่ต้องคัดลอกจากนั้นใช้เวลา 5 วินาทีในการคัดลอกจากนั้นตรวจสอบไฟล์อื่น ๆ เพื่อคัดลอกต่อไปอีก 5 นาที โดยรวมแล้วการคัดลอกไฟล์ 5 วินาทีสิ้นสุดลงในเวลา 20 นาที!

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


1
คุณลองวิธีแก้ปัญหาจากกระทู้นี้หรือไม่? unix.stackexchange.com/questions/189878/…
UVV

@UVV ฉันยังไม่ได้ทำ ฉันอาจทำเช่นนั้นได้อย่างไรก็ตาม 1) rsync ดูเหมือนจะไม่ใช้แกนประมวลผลเต็มในกรณีของฉันด้วยเหตุผลบางอย่าง (= ฉันไม่แน่ใจว่าฉันใช้ซีพียู จำกัด หรือมีข้อ จำกัด อยู่ที่อื่น) และ 2) นี่เป็นเพียง บนซีพียูแบบดูอัลคอร์ดังนั้นถึงแม้ว่าการปรับปรุงจะเป็น 2 เท่า แต่ก็ยังคงมีอัตรากำไรขั้นต้นที่สูงสำหรับการปรับปรุง
AF7

ใช่นี่มันบ้าไปแล้วทำไม rsync ถึงช้าขนาดนี้ แม้จะมี rsync "--size-only" ดูเหมือนว่าจะใช้เวลาตลอดไปในการสร้างรายชื่อไฟล์ที่เพิ่มขึ้น ทำไม? ฉันสามารถตรวจสอบขนาดไฟล์ด้วยตนเองและกำหนดว่าไฟล์ใดที่มีการเปลี่ยนแปลงเร็วกว่ามาก! มันใช้เวลานานมากในการทำอะไรและฉันจะปิดคุณสมบัติแฟนซีเหล่านี้ได้อย่างไร แก้ไข: อาไม่เป็นไรฉันมีธง 'c' ตั้งโดยไม่ได้ตั้งใจ หากไม่มีการตรวจสอบมันเร็วมากที่นี้
ชาวนาเบ็น

คำตอบ:


5

เท่าที่rsyncคุณกังวลว่าคุณกำลังคัดลอกไฟล์ระหว่างสองไฟล์ต้นไม้ดังนั้นมันจะปิดการใช้งานการเพิ่มประสิทธิภาพส่วนใหญ่ (รวมถึงอัลกอริทึมของเดลต้าที่มีชื่อเสียง) หากคุณสามารถเรียกใช้rsyncบนเซิร์ฟเวอร์ระยะไกลของคุณ (เพื่อให้คุณได้รับสถานการณ์ลูกค้า - เซิร์ฟเวอร์ที่แท้จริงในเครือข่ายของคุณ) คุณจะได้รับแรงฉุดจำนวนมาก

อย่างไรก็ตามนี่คือตัวเลือกอื่น ๆ ที่ควรพิจารณา

  1. คัดลอกโดยไม่ต้องกังวลกับการลบไฟล์เก่า วิธีนี้อาจช่วยให้คุณสามารถถ่ายโอนได้เร็วขึ้นบ่อยขึ้นและลดการล้างข้อมูลที่ช้าลงให้พูดวันละครั้ง:

    cp -au /mnt/ROUTER_WD_2TB/. /mnt/BACKUP_HITACHI_2TB/
    
  2. ใช้รูปแบบของrsyncอัลกอริทึมการลบเริ่มต้นเพื่อหลีกเลี่ยงการสร้างรายการไฟล์ทั้งหมดก่อนการถ่ายโอน:

    rsync -haAXi --quiet --delete --delete-during /mnt/ROUTER_WD_2TB/ /mnt/BACKUP_HITACHI_2TB/
    
  3. แยกไดเรกทอรีระดับบนสุดออกเป็นงานที่แยกกันและเรียกใช้งานแบบขนาน คุณอาจพบว่าถ้าคุณผูกกับดิสก์ IO แล้วสิ่งนี้จะไม่ช่วยได้จริงๆและสำหรับการหมุนจานมันเกือบจะแน่นอนว่าจะทำให้สิ่งต่าง ๆ แย่ลง

    for d in /mnt/ROUTER_WD_2TB/*
    do
        rsync -haAXi --quiet --delete --delete-during "$d" /mnt/BACKUP_HITACHI_2TB/ >"/tmp/rsync.${d/*\/}.log" 2>&1 &
    done
    wait
    cat /tmp/rsync.*.log
    rm -f /tmp/rsync.*.log
    

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


--delete --delete-duringไม่ได้ทำเพื่อฉัน - ที่ยังคงส่งรายชื่อไฟล์ที่เพิ่มขึ้น - แต่--delete --delete-beforeตรงไปที่: building file listซึ่งดูเหมือนว่าเป็นความคืบหน้าสำคัญ ฉันคิด.
mlissner

ไม่สิฉันกลัว หากคุณใช้--delete-beforeให้rsyncดำเนินการส่งผ่านสองครั้งข้ามทรีไฟล์: รายการหนึ่งสำหรับการลบและรายการถัดไปสำหรับการคัดลอก
roaima

ขอบคุณ ในกรณีนี้ ... วิธีใดที่จะหลีกเลี่ยงการสร้างรายการไฟล์ที่เพิ่มขึ้น?
mlissner

@mlissner มันขึ้นอยู่กับปัจจัยหลายอย่าง สิ่งที่ใหญ่ที่สุดคือไม่ว่าคุณจะทำการคัดลอกข้อมูลจากภายในสู่ภายนอกหรือจากภายในสู่ไกล
roaima

เป็นของท้องถิ่นของฉันสำหรับทุกคนแม้ว่าหนึ่งในนั้นคือดิสก์ USB?
mlissner

-2

คุณสามารถใช้เพื่อดูบันทึกทั้งหมดของ-vvrsync


2
สิ่งนี้จะตอบคำถามได้อย่างไรเช่นความเร็วนี้จะเพิ่มขึ้นได้อย่างไร?
Kusalananda

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