ฉันใช้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เป็นสิ่งที่เราให้ความสำคัญอันดับแรก
rsyncs ในขนานเป็นโฟกัสหลักในขณะนี้