Rsync फ़ाइल सूचियों की गणना को गति दें / टालें


12

मैं सिंक दो डिस्क में रखने के लिए rsync 3.1.1 का उपयोग करता हूं, जिनमें से एक नेटवर्क पर है और एक सांबा शेयर के रूप में घुड़सवार है /mnt/ROUTER_WD_2TB/। यह नेटवर्क सीमाओं के कारण 30-40MB / s की गति के साथ स्रोत है। अन्य, गंतव्य, स्थानीय रूप से माउंट किया गया है (चोटी 110 एमबी / एस) और है /mnt/BACKUP_HITACHI_2TB/

मैं निम्नलिखित rsync कमांड का उपयोग करता हूं:

rsync  -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.

डिस्क में कई फाइलें होती हैं, जिनमें से अधिकांश छोटी होती हैं।

समस्या यह है कि rsync किसी भी फ़ाइलों को स्थानांतरित करने के लिए शुरू करने से पहले काफी लंबा समय (10-20 मीटर) लेता है , मुझे लगता है क्योंकि इसमें बहुत बड़ी संख्या में छोटी फ़ाइलों के लिए फ़ाइल सूचियों की गणना करना है। इस अवधि के दौरान, newtwork का उपयोग कम 200-500KB / s पर बैठता है, जबकि फ़ाइलों को स्थानांतरित करते समय गति लगभग 40MB / s है।

यह आमतौर पर ऐसा होता है कि rsync को लगभग 15 मीटर लगते हैं, आखिरकार इसे कॉपी करने के लिए कुछ ढूंढना पड़ता है, फिर इसे कॉपी करने में 5 सेकंड लगते हैं, फिर कुछ अन्य फाइलों की प्रतिलिपि बनाने के लिए 5 मिनट तक चेक करना जारी रखता है। सभी में, एक 5 सेकंड की फाइल कॉपी 20 मिनट तक चलती है!

क्या फ़ाइलों को कॉपी करने से पहले इस लंबी अवधि से बचने के लिए कोई उपाय किया जा सकता है, फ़ोल्डर को छोड़कर अन्य? किसी भी तरह का "कैश" मैं लागू कर सकता हूं ताकि rsync को खरोंच से सभी फ़ाइल सूची का पुनर्निर्माण न करना पड़े?


1
क्या आपने इस धागे से एक समाधान की कोशिश की है? unix.stackexchange.com/questions/189878/…
UVV

@ युवी मैंने ऐसा नहीं किया है। मैं ऐसा कर सकता हूं, हालांकि 1) rsync पहले से ही मेरे मामले में एक पूर्ण कोर का उपयोग नहीं करता है, किसी कारण से (= मैं अनिश्चित हूं कि क्या मैं सीपीयू सीमित हूं या यदि सीमा कहीं और निहित है) और 2) यह केवल है दोहरे कोर सीपीयू पर, भले ही सुधार 2X था, फिर भी सुधार के लिए एक बड़ा मार्जिन होगा।
AF7

हाँ, यह मुझे पागल लगता है, इस पर rsync इतना धीमा क्यों है? यहां तक ​​कि "--साइज-ओनली" rsync को अपनी वृद्धिशील फ़ाइल सूची बनाने के लिए हमेशा के लिए लगता है। क्यों? मैं मैन्युअल रूप से फ़ाइल के आकार की जांच कर सकता हूं और यह निर्धारित कर सकता हूं कि किन लोगों ने बहुत तेजी से बदल दिया है! यह इतना समय बर्बाद कर रहा है, और मैं इन फैंसी सुविधाओं को कैसे बंद करूं? संपादित करें: आह, कोई बात नहीं, मेरे पास दुर्घटना से 'ग' झंडा था। चेकसम के बिना यह बहुत तेज है।
बेन किसान

जवाबों:


5

जहां तक rsyncआपका सवाल है कि आप दो स्थानीय फ़ाइल पेड़ों के बीच की नकल कर रहे हैं, इसलिए यह इसके अधिकांश ऑप्टिमाइज़ेशन (इसके डेल्टा एल्गोरिथम सहित जिसके लिए यह प्रसिद्ध है) को निष्क्रिय कर देता है। यदि आप rsyncअपने दूरस्थ सर्वर पर चला सकते हैं (इसलिए आपको अपने नेटवर्क में एक सच्चा क्लाइंट-सर्वर परिदृश्य मिलता है) तो आप कर्षण की एक महत्वपूर्ण राशि प्राप्त करेंगे।

फिर भी यहाँ विचार करने के लिए अन्य विकल्प हैं

  1. पुरानी फाइलों को हटाने की चिंता किए बिना नकल करना। यह आपको अधिक बार तेज़ स्थानांतरण करने की अनुमति दे सकता है, और धीमे सफाई के लिए कह सकता है कि दिन में सिर्फ एक बार:

    cp -au /mnt/ROUTER_WD_2TB/. /mnt/BACKUP_HITACHI_2TB/
    
  2. rsyncस्थानांतरण से पहले फ़ाइलों की पूरी सूची बनाने से बचने के लिए डिफ़ॉल्ट विलोपन एल्गोरिथ्म के विभिन्न प्रकारों का उपयोग करें :

    rsync -haAXi --quiet --delete --delete-during /mnt/ROUTER_WD_2TB/ /mnt/BACKUP_HITACHI_2TB/
    
  3. शीर्ष-स्तरीय निर्देशिकाओं को अलग-अलग कार्यों में विभाजित करें और उन्हें समानांतर में चलाएं। आप पा सकते हैं कि यदि आप डिस्क IO- बाध्य हैं, तो यह वास्तव में मदद नहीं करेगा, और यह कताई करने के लिए लगभग निश्चित रूप से चीजों को बदतर बना देगा।

    for d in /mnt/ROUTER_WD_2TB/*
    do
        rsync -haAXi --quiet --delete --delete-during "$d" /mnt/BACKUP_HITACHI_2TB/ >"/tmp/rsync.${d/*\/}.log" 2>&1 &
    done
    wait
    cat /tmp/rsync.*.log
    rm -f /tmp/rsync.*.log
    

इन सुझावों में से कोई भी तो मदद करता है अगर यह एक और जोड़ने के लायक हो जाएगा --verboseकरने के लिए rsyncदेखने के लिए यह क्या कर रहा है। मुझे संदेह है कि यह सभी अपरिवर्तित फ़ाइलों के माध्यम से तेजस्वी है, और यदि आपके पास पर्याप्त फ़ाइलें हैं तो बस एक लंबा समय लगता है।


--delete --delete-duringमेरे लिए यह नहीं किया - कि अभी भी एक वृद्धिशील फ़ाइल सूची भेजी है - लेकिन --delete --delete-beforeसीधे करने के लिए चला गया: building file listजो प्रमुख प्रगति की तरह लगता है। मुझे लगता है।
mlissner

नहीं, वह पीछे की तरफ है, मुझे डर है। यदि आप उपयोग करते हैं --delete-before, तो rsyncफ़ाइल ट्री में दो पास करता है: एक डिलीट के लिए और दूसरा कॉपी करने के लिए।
रोज़ा

धन्यवाद। उस मामले में ... वृद्धिशील फ़ाइल सूची के निर्माण से बचने का कोई तरीका?
mlissner

@mlissner यह कई अलग-अलग कारकों पर निर्भर करता है। अब तक का सबसे बड़ा यह है कि आप स्थानीय-से-स्थानीय या स्थानीय-से-दूरस्थ प्रतिलिपि बना रहे हैं या नहीं।
रोज़ा

यह मेरे लिए स्थानीय से स्थानीय है, हालांकि स्थानीय लोगों में से एक USB डिस्क है?
mlissner

-2

आप -vvका पूरा लॉग देखने के लिए उपयोग कर सकते हैं rsync


2
यह प्रश्न का उत्तर कैसे देगा, अर्थात यह गति कैसे होगी?
Kusalananda

आप बस लॉग देख सकते हैं, जिससे पता चलता है कि rsync शुरू करने में इतना समय क्यों लगा, हो सकता है कि ऐसी फाइलें हों जिन्हें आप समय कम करने के लिए rsync से छोड़ सकते हैं।
namaiiee
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.