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