Rsync को कैसे गति दें?


44

मैं अपने बाहरी USB HDD पर निर्देशिका को सिंक करने के लिए rsync चला रहा हूं। यह लगभग 150 गीगा डेटा है। 50000+ फाइलें मैं अनुमान लगाऊंगा।

यह इस समय पहली बार सिंक हो रहा है, लेकिन इसकी नकल केवल 1-5 एमबी / सेकेंड की दर से हो रही है। यह अविश्वसनीय रूप से एक USB 2.0 संलग्नक के लिए धीमा लगता है। ड्राइव पर कोई अन्य स्थानान्तरण नहीं हो रहा है।

यहां मेरे द्वारा उपयोग किए गए विकल्प हैं:

rsync -avz --progress /mysourcefolder /mytargetfolder

मैं Ubuntu सर्वर 9.10 चला रहा हूं।


2
क्या आप वाकई USB2 कनेक्शन प्राप्त कर रहे हैं? क्या कोई नॉन-आरएसयूएनसी) कॉपी या अन्य राइट ऑपरेशन सामान्य गति से चलता है? यदि नहीं, तो क्या आपने एक अन्य यूएसबी पोर्ट / केबल के साथ एक कॉपी / अन्य लिखने सेशन की कोशिश की है?
क्वैक क्वोटोटे

यह भी देखें serverfault.com/questions/43014/... - वहाँ लोगों को भी दो पहुंचाया का उपयोग कर का प्रस्ताव tarआज्ञा या cpio
Blaisorblade

जवाबों:


38

पहले सिंक के लिए बस उपयोग करें

cp -a  /mysourcefolder /mytargetfolder

गंतव्य खाली होने पर rsync केवल ओवरहेड जोड़ता है।

यह भी .. -z विकल्प शायद आपके प्रदर्शन को मार रहा है, यदि आप डेटा को धीमी लिंक पर स्थानांतरित नहीं कर रहे हैं तो आपको इसका उपयोग नहीं करना चाहिए।


3
rsync को इसलिए कहा जाता है क्योंकि यह दूरस्थ सिंक्रोनाइज़ेशन के लिए है और यह वास्तव में इस कारण से स्थानीय रूप से जुड़े वॉल्यूम के लिए उपयुक्त नहीं है।
msanford

6
यह स्थानीय स्थानान्तरण के लिए भी उपयोग करने योग्य है, और यह अधिक लचीला है। यह संभवतः पहले सिंक के लिए संभवतः ओवरकिल है।
Blaisorblade

1
rsync भी एक तरह से सिंक है। सर्वर या सर्वर से बैकअप लेने के लिए बहुत अच्छा है। हालाँकि, यदि आप एक हटाने योग्य ड्राइव के लिए स्थानीय TWO- वे सिंक चाहते हैं, तो आप csync csync.org/get-it को देखना चाहेंगे कि यह csync2 के साथ भ्रमित न हो जो कि एक पूरी तरह से अलग परियोजना है।
जेसी द विंड वांडर

3
rsync -avz --progress /mysourcefolder/ /mytargetfolderया आपको सामग्री को मिरर करने mysourcefolderके mytargetfolderबजाय अंदर की एक प्रति मिल जाएगी
संपादक

2
यह उत्तर प्रश्न का उत्तर नहीं देता है। प्रश्न यह था कि rsync को कैसे अनुकूलित किया जाए - इसे cp कमांड से न बदलें।
oemb1905

38

यदि आप एक ही मशीन में डिस्क के लिए फास्ट नेटवर्क या डिस्क के साथ rsync का उपयोग कर रहे हैं,

संपीड़न -z का उपयोग नहीं करना

और का उपयोग कर

इसे हार्डड्राइव या नेटवर्क के प्रदर्शन तक गति दें

संपीड़न CPU का बहुत उपयोग करता है

inplace का उपयोग नहीं करने से हार्डड्राइव थ्रोट अलॉट हो जाता है (यह अंतिम बनाने से पहले एक अस्थायी फ़ाइल का उपयोग करता है)

कम्प्रेशन का उपयोग न करना इंटरनेट पर करने के लिए बेहतर है (धीमा नेटवर्क)

नई: गंतव्य के बारे में जागरूक रहें ... अगर NTFS "संपीड़न" सक्षम है ... यह बड़ी फ़ाइलों को धीमा कर देता है (मैं 200 एमबी + कहता हूं) rsync लगभग ठप लगता है, यह इस कारण होता है।


NTFS संपीड़न बड़ी फ़ाइलों पर धीमा है
स्कॉट क्रेमर

मुझे मैन पेज पर '--inline' के बारे में कुछ भी नहीं दिख रहा है
एंथनी

1
यह '--inplace'
स्कॉट Kramer

26

-Wविकल्प का उपयोग करें । यह डेल्टा / अंतर की तुलना को अक्षम करता है। जब फ़ाइल का समय / आकार भिन्न होता है, तो rsync पूरी फ़ाइल की प्रतिलिपि बनाता है।

-zविकल्प भी हटा दें । यह केवल नेटवर्क ट्रैफ़िक को कंप्रेस करने के लिए उपयोगी है।

अब rsyncउतनी ही तेजी से होना चाहिए cp


6
माइनर नोट: -zकेवल कम गति नेटवर्क यातायात के लिए उपयोगी है। यदि आपका नेटवर्क काफी तेज है, तो यह चीजों को धीमा कर देगा, क्योंकि आप सीपीयू द्वारा सीमित होंगे।
WhyNotHugo

3
इन युक्तियों ने दो एनएएस उपकरणों के बीच मेरी फाइलों के हस्तांतरण को काफी हद तक खत्म कर दिया, धन्यवाद!
djhworld 12

2
लेकिन ध्यान दें कि मैन पेज के अनुसार कहते हैं -W: "यह डिफ़ॉल्ट है जब स्रोत और गंतव्य दोनों को स्थानीय पथ के रूप में निर्दिष्ट किया जाता है, लेकिन केवल अगर कोई बैच-लेखन विकल्प प्रभाव में नहीं है।"
गुओलियांग ओन

13

पहला - इस मामले में फ़ाइलों की संख्या एक प्रमुख कारक होने जा रही है। यह प्रत्येक का औसत आकार 3 एमबी है। ओपी के मामले में गति को प्रभावित करने वाला एक io टोंटी शायद है। यहाँ और अधिक - यह एक बहुत सूखी पढ़ा है, लेकिन कवर तस्वीर इसके लायक है।

तो, खाली निर्देशिका में कॉपी करने के लिए rsync का उपयोग करना? इसे गति देने के कुछ तरीके यहां दिए गए हैं:

  1. नहीं -z - निश्चित रूप से ओपी में -z का उपयोग न करें।
  2. - कोई सेक आपको गति नहीं दे सकता है। इसका सबसे बड़ा प्रभाव हो सकता है ... मेरा परीक्षण 13,000 फाइलें, कुल आकार 200 एमबी, और rsync 3.1.3 का उपयोग कर रहा था। मैंने उसी आंतरिक एसएसडी ड्राइव पर एक अलग विभाजन के लिए सिंक किया। --No- सेक के साथ, मुझे 18 एमबीपीएस मिलता है, और इसके बिना मुझे 15 एमबीपीएस मिलता है। cp, वैसे, 16 एमबीपीएस हो जाता है। यह एक बहुत छोटा औसत फ़ाइल आकार है। इसके अलावा - मैं -no- सेक के लिए कोई दस्तावेज नहीं ढूँढ सकता। मैंने इसके बारे में इस पोस्ट से सीखा है stackexchange.com पर।
  3. पूरी फाइलें कॉपी करने के लिए - हमेशा इसका उपयोग करें यदि आप इसे मतभेदों की तुलना नहीं करना चाहते हैं; कोई बात नहीं कि rsync का बिंदु मतभेदों की तुलना करना और केवल परिवर्तनों को अद्यतन करना है।
  4. - स्पार्स फ़ाइलों को अच्छी तरह से संभालने के लिए - यदि आपके पास स्पार्स फाइलें नहीं हैं, तो आप चोट नहीं पहुंचा सकते।
  5. --exclude-from या कुछ ऐसी ही चीज़ों को छोड़ दें जिनकी आपको ज़रूरत नहीं है, समय कम हो जाएगा, लेकिन इससे आपकी स्थानांतरण गति नहीं बढ़ेगी।
  6. यह संभव है यदि आप आउटपुट को इस तरह से किसी फ़ाइल में भेजते हैं rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err- पहला> मूल रूप से सभी सामानों के साथ एक फ़ाइल प्रिंट करता है जिसे आप सामान्य रूप से देखेंगे, और 2> त्रुटि संदेशों को संदर्भित करता है।
  7. अंत में, आपके स्थानांतरण के विभिन्न हिस्सों के लिए rsync के कई उदाहरण चलाना एक बड़ी मदद हो सकती है।

मेरी आज्ञा होगी:

rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run

अगर सब ठीक लग रहा है, तो मैं "डिलीट-रन" हटाऊंगा और इसे जाने दूंगा। A, X, और E कवर विशेषताओं और अनुमतियों को कवर नहीं करता है -a, l सॉफ्ट लिंक्स के लिए है, H हार्ड लिंक के लिए है, और h मानव पठनीय के लिए है।

USB ड्राइव, या समान ड्राइव या नेटवर्क पर पहले से ही सिंक की गई निर्देशिका को अपडेट करने के लिए, स्थानांतरण गति को अधिकतम करने के लिए सभी को अलग-अलग rsync कमांड की आवश्यकता होगी।

बोनस - यहां rsync मैन पेज है , और यदि आप अपनी हार्ड ड्राइव की गति का परीक्षण करना चाहते हैं, तो bonnie ++ एक अच्छा विकल्प है, और आपके नेटवर्क की गति के लिए, iperf का प्रयास करें


* पोस्ट लगभग दस साल पुरानी है, लेकिन खोज इंजन इसे पसंद करते हैं, और मैं इसे देखता रहता हूं। यह एक अच्छा सवाल है, और मुझे नहीं लगता कि "rsync को कैसे तेज करें" का शीर्ष उत्तर "इसके बजाय cp का उपयोग करें" होना चाहिए।


1
आइटम 7 के संबंध में) "ब्लॉकदेव --सेट्रा 8192 / देव / एसडीएक्स" का उपयोग करके पठन-आगे बफर को बढ़ाकर, मैं स्रोत के रूप में एक पारंपरिक एचडीडी का उपयोग करके बहुत अधिक प्रदर्शन में सुधार कर सकता हूं। इसलिए मैं सिर की तलाश कम करने का इरादा रखता हूं।
user2480144

2

आप यह नहीं कहते कि आपकी फ़ाइलों का आकार वितरण किस आकार का है। यदि कई छोटी फाइलें हैं, तो यह स्रोत और गंतव्य ड्राइव दोनों में हेड मूवमेंट लेटेंसी को बढ़ाकर समग्र अंतरण दर को कम कर देगा क्योंकि टूल नई फाइलें खोलता है और ओएस निर्देशिका प्रविष्टियों और अन्य मेटाडेटा (जैसे कि फाइल सिस्टम का उपयोग कर रहे हैं, तो रखता है) ट्रांसफर के दौरान डेट-डेटा जर्नलिंग जैसे ext3 / ext4 और NTFS डिफ़ॉल्ट रूप से) अप टू डेट। एक फाइल कॉपी प्रॉसेस केवल बड़ी वस्तुओं के लिए "अपने स्ट्राइड में मिलेगा", जब एक साधारण बल्क ट्रांसफर हो रहा है।


0

आप निश्चित रूप से एक कोशिश rclone देना चाहते हैं । यह बात तेज़ तेज़ है:

$ ट्री / usr [...] 26105 निर्देशिका, 293208 फाइलें

$ sudo rclone सिंक / usr / home / fred / temp -P -L --transfers 64

हस्तांतरित: 17.929G / 17.929 GBytes, 100%, 165.692 MBytes / s, ETA 0s त्रुटियां: 75 (पुन: प्रयास करने में मदद मिल सकती है) चेक: 691078/691078, 100% हस्तांतरित: 345539/345539, 100% व्यतीत समय: 1m50.8s

यह एक स्थानीय कॉपी और LITEONIT LCS-256 (256GB) SSD से है।

आप इसे और भी तेज करने के लिए पहले रन पर --ignore-checkum जोड़ सकते हैं।


0

बचें

  • -z/ --compress: संपीड़न केवल CPU को लोड करेगा क्योंकि हस्तांतरण एक नेटवर्क पर नहीं बल्कि RAM पर है।
  • --append-verify: एक बाधित स्थानांतरण फिर से शुरू करें। यह एक अच्छा विचार लगता है, लेकिन इसमें खतरनाक विफलता का मामला है: कोई भी गंतव्य स्रोत के समान आकार (या अधिक) फ़ाइल को IGNORED किया जाएगा। इसके अलावा, यह अंत में पूरी फ़ाइल को चेक करता है, जिसका अर्थ है --no-whole-fileकि एक खतरनाक विफलता मामले को जोड़ते समय कोई महत्वपूर्ण गति नहीं है ।

उपयोग

  • -S/ --sparse: विरल ब्लॉकों में नल के अनुक्रमों को चालू करें
  • --partialया -Pजो है --partial --progress: भविष्य में फिर से शुरू करने के लिए आंशिक रूप से स्थानांतरित फ़ाइलों को सहेजें। नोट: फ़ाइलों में एक अस्थायी नाम नहीं होगा, इसलिए यह सुनिश्चित करें कि पूरी कॉपी के पूरा होने तक और कुछ भी गंतव्य का उपयोग करने की उम्मीद नहीं है।
  • --no-whole-fileइतना है कि कुछ भी है कि नाराज होने की जरूरत है डेल्टा हस्तांतरण का उपयोग करता है। आंशिक रूप से हस्तांतरित फ़ाइल का आधा पढ़ना अक्सर इसे फिर से लिखने की तुलना में बहुत तेज होता है।
  • --inplace फ़ाइल की प्रतिलिपि से बचने के लिए (लेकिन केवल तब तक जब गंतव्य पूरा न होने तक कुछ भी नहीं पढ़ रहा हो)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.