मैं 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 अभी प्राथमिक फोकस है।