ฉันใช้rsync
สคริปต์เพื่อซิงโครไนซ์ข้อมูลที่โฮสต์หนึ่งกับข้อมูลที่โฮสต์อื่น ข้อมูลมีไฟล์ขนาดเล็กจำนวนมากที่มีส่วนร่วมเกือบ 1.2TB
เพื่อซิงค์ไฟล์เหล่านั้นฉันใช้rsync
คำสั่งดังต่อไปนี้:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
เนื้อหาของ proj.lst มีดังนี้:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
จากการทดสอบฉันเลือกสองโครงการ (ข้อมูล 8.5GB) และฉันดำเนินการคำสั่งด้านบน เป็นกระบวนการต่อเนื่องมันเครื่องมือ 14 นาที 58 วินาทีให้เสร็จสมบูรณ์ ดังนั้นสำหรับข้อมูล 1.2TB จะใช้เวลาหลายชั่วโมง
ถ้าฉันจะสามารถหลายrsync
กระบวนการในแบบคู่ขนาน (ใช้&
, xargs
หรือparallel
) ก็จะช่วยประหยัดเวลาของฉัน
ฉันพยายามด้วยคำสั่งด้านล่างด้วยparallel
(หลังจากcd
ไอเอ็นจีไปยังไดเรกทอรีแหล่งที่มา) และใช้เวลา 12 นาที 37 วินาทีในการดำเนินการ:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
สิ่งนี้น่าจะใช้เวลาน้อยลง 5 เท่า แต่ก็ไม่เป็นเช่นนั้น ฉันคิดว่าฉันจะผิดพลาดที่ไหนสักแห่ง
ฉันจะรันหลายrsync
กระบวนการเพื่อลดเวลาดำเนินการได้อย่างไร
rsync
เป็นสิ่งที่เราให้ความสำคัญอันดับแรก
rsync
s ในขนานเป็นโฟกัสหลักในขณะนี้