बड़ी फ़ाइलों के लिए पहले स्थानांतरण या फिर rsync -z? जो सबसे तेज़ होगा?


14

मेरे पास एक टन सापेक्षता वाली छोटी डेटा फाइलें हैं लेकिन वे लगभग 50 जीबी तक ले जाती हैं और मुझे उन्हें एक अलग मशीन में स्थानांतरित करने की आवश्यकता है। मैं ऐसा करने के लिए सबसे कुशल तरीके से सोचने की कोशिश कर रहा था।

विचार मैं पूरी बात को gzip करने के लिए थे, फिर इसे rsync करें और इसे डिकम्प्रेस करें, संपीड़न के लिए rsync -z पर भरोसा करें, gzip तब rsync -z का उपयोग करें। मुझे यकीन नहीं है कि मैं सबसे अधिक कुशल होगा क्योंकि मुझे यकीन नहीं है कि वास्तव में rsync -z कैसे लागू किया जाता है। किस विकल्प पर कोई विचार सबसे तेज होगा?

जवाबों:


11

आप पूरी चीज़ को "gzip" नहीं कर सकते क्योंकि gzip केवल एक फ़ाइल को संपीड़ित करता है, आप एक टार फ़ाइल बना सकते हैं और इसे "पूरी चीज़ को gzip" करने के लिए gzip कर सकते हैं, लेकिन आप केवल संशोधित फ़ाइल की प्रतिलिपि बनाने की rsync क्षमता को ढीला करेंगे।

तो सवाल यह है: क्या यह फ़ाइल को स्टोर करने के लिए बेहतर है मुझे rsync gziped या rsync के -z विकल्प पर भरोसा करना होगा।
उत्तर शायद यह है कि आप अपने सर्वर पर फ़ाइल को अनज़िप नहीं करना चाहते हैं? मुझे लगता है हाँ, इसलिए मैं यह नहीं देखता कि आप rsync करने से पहले gzip फ़ाइल को कैसे प्रबंधित कर सकते हैं।

क्या आपको केवल संशोधित फ़ाइल की प्रतिलिपि बनाने की rsync क्षमता की आवश्यकता नहीं है? इस मामले में, अपने सामान से संबंधित एक tar.gz फ़ाइल का एक scp करने के बजाय rsync का उपयोग क्यों करें?

वैसे भी सवाल का जवाब देने के लिए, rsync gzip gzip के साथ gziping फ़ाइल की तुलना में थोड़ी कम कुशल होगी। क्यों ? चूँकि rsync chunk द्वारा डेटा चंक को gzip करेगा, इसलिए डेटा का एक छोटा सा सेट कम्प्रेशन करने के लिए gzip का उपयोग करने वाली तालिका बनाने के लिए उपयोग किया जाएगा, डेटा का एक बड़ा सेट (gzip एक ही बार में पूरी फ़ाइल का उपयोग करेगा) एक बेहतर संपीड़न तालिका देता है। लेकिन अंतर ज्यादातर मामलों में बहुत छोटा होगा लेकिन बहुत ही दुर्लभ स्थिति में अंतर अधिक महत्वपूर्ण हो सकता है (यदि आपके पास बहुत बड़ी फाइल है जिसमें फाइल पर कई बार दोहराए जाने वाले लंबे समय तक एक दूसरे से बहुत दूर है) (यह एक दूसरे से बहुत दूर है) एक बहुत ही सरल उदाहरण)


1
मैं उसके प्रश्न को कैसे पढ़ता हूँ, वह उसे तार पर पाने के लिए सेक लेगा और फिर दूसरी तरफ विघटित करेगा। मैं gzip पर rsync मूल संपीड़न के साथ जाऊँगा, बस क्योंकि 50GB को संपीड़ित और विघटित करने से महत्वपूर्ण मात्रा में समय लग सकता है। फिर, अगर फाइलें ज्यादातर पाठ हैं, तो वे अच्छी तरह से सेक करेंगे। तीसरा विकल्प: USB ड्राइव में फ़ाइलों को कॉपी करें।

3
@ रैंडॉल्फ पॉटर: हाँ समय स्थानीय रूप से 50GB सेक करने के लिए खो दिया है तो rsync rsync -z का उपयोग करने की तुलना में अधिक होगा, वैसे भी अगर वह rsync का लाभ उठाना चाहता है (केवल परिवर्तित फ़ाइल की प्रतिलिपि बना रहा है) तो संपीड़न पहले नहीं किया जा सकता
त्रिज्या

बहुत अच्छी बात है। +1 आपके लिए :-)

यह भी याद रखें कि गज़िप एक स्ट्रीम कंप्रेसर है।
फाल्कन मोमेंट

6

यदि आप केवल एक बार डेटा कॉपी कर रहे हैं, तो rsync अपने आप में एक बड़ी जीत नहीं होगी। यदि आपको gzip पसंद है, (या tar + gzip, चूंकि आपके पास कई फाइलें हैं), तो आप कुछ इस तरह की कोशिश कर सकते हैं:

tar -cz /home/me/source/directory | ssh target tar -xz --directory /home/you/target/directory

वह सम्पीडन आपको मिल जाएगी और rsync को शामिल किए बिना सीधे कॉपी करें।


मैं शायद उस gzip के बजाय के लिए --lzop का उपयोग करेंगे ... बहुत तेजी से और कम CPU ओवरहेड और अभी भी पाठ के लिए अच्छा संपीड़न अनुपात है
underrun

5

@radius, gzipकाम करने के तरीके के बारे में एक छोटी सी नाइट - gzipएक ब्लॉक-आधारित संपीड़न एल्गोरिथ्म है, और उस पर काफी सरल है। पूरी फ़ाइल को संपीड़न तालिका के लिए नहीं माना जाता है - केवल प्रत्येक ब्लॉक। अन्य एल्गोरिदम फ़ाइल की संपूर्ण सामग्री का उपयोग कर सकते हैं और कुछ ऐसे हैं जो कई ब्लॉकों या यहां तक ​​कि चर-आकार के ब्लॉक की सामग्री का उपयोग करते हैं। एक आकर्षक उदाहरण है lrzip, उसी लेखक द्वारा rsync!

gzipएल्गोरिथ्म पर पतला

इसलिए, संक्षेप में, rsync -zसंभवतः पहले के समान संपीड़न का उपयोग करने की संभावना होगी gzip- और यदि आप एक अंतर हस्तांतरण कर रहे हैं, तो बेहतर है क्योंकि rsyncएल्गोरिथ्म अलग है।

उस ने कहा, मुझे लगता है कि कोई भी नियमित रूप scpसे rsyncगैर-अंतर हस्तांतरण के लिए धड़कता है - क्योंकि इसमें rsyncएल्गोरिथ्म की तुलना में बहुत कम ओवरहेड होगा (जो scpवैसे भी अंडर-हुड का उपयोग करेगा !)

अपने नेटवर्क तो करता है एक टोंटी हो जाते हैं, तो आप तार पर संपीड़न का उपयोग करना चाहते हैं।

यदि आपके डिस्क में अड़चन है, तो जब एक संपीड़ित फ़ाइल में स्ट्रीमिंग करना सबसे अच्छा होगा। (उदाहरण के लिए, netcatएक मशीन से दूसरे में, स्ट्रीमिंग में gzip -c)

आमतौर पर, यदि गति की कुंजी है, तो पहले से मौजूद फ़ाइल को संपीड़ित करना हाथ से बेकार है।

TIMTOWTDI, YMMV, IANAL, आदि।


2

इस आदमी के अनुसार यह सिर्फ उपयोग करने के लिए तेज हो सकता हैrsync -z , हालाँकि मुझे लगता है कि यह हर फाइल को ट्रांसफर करने से पहले कम्प्रेस करने में उतना ही कारगर होगा। यह टार स्ट्रीम को संपीड़ित करने की तुलना में तेज़ होना चाहिए, जैसा कि दूसरों द्वारा सुझाया गया है।

मैन पेज से:

          Note  that  this  option  typically  achieves better compression
          ratios than can be achieved by using a compressing remote  shell
          or  a  compressing  transport  because it takes advantage of the
          implicit information in the matching data blocks  that  are  not
          explicitly sent over the connection.

1
यदि आप एक तेज नेटवर्क है, तो मैं rsync -z के साथ --compress-level = 1 का उपयोग करने का सुझाव दूंगा। आप चाहते हैं कि नेटवर्क आपकी टोंटी हो, न कि सीपीयू या डिस्क आईओ, कुल ट्रांसफर टाइम को कम करने के लिए। यदि नेटवर्क धीमा है, तो डिफ़ॉल्ट -z (जो कि gzip -6 के बराबर है) का उपयोग करके अभी भी प्रक्रिया नेटवर्क को बाध्य कर सकता है।
ralayter

1

चूंकि संपीड़ित फ़ाइल और rsync दोनों का scp बहुत समान स्थानांतरण समय लेगा, इसलिए "ऐसा करने का सबसे कुशल तरीका" संपीड़ित, स्थानांतरण के बजाय ऑन-द-फ्लाई संपीड़न होगा।

"तेजी" के अलावा अन्य विचारों में शामिल हैं:

यदि सभी फ़ाइलों को स्थानांतरित नहीं किया जाता है तो rsync को आसानी से फिर से शुरू किया जा सकता है।

दूरस्थ मशीन पर फ़ाइलों को बनाए रखने के लिए rsync का उपयोग किया जा सकता है।

स्थानीय टार या गज़िप के लिए स्थानीय स्थान की आवश्यकता होती है।

लक्ष्य मशीन और फ़ायरवॉल दोनों के लिए पोर्ट उपयोग विचार: 1) एसपीपी पोर्ट 22 (डिफ़ॉल्ट रूप से) का उपयोग करता है जो स्वीकार्य नहीं हो सकता है। 2) rsync उपयोगकर्ता पोर्ट 873 (डिफ़ॉल्ट रूप से)

मुझे यकीन नहीं है कि त्रिज्या को उम्मीद है कि मूल पोस्टर अनज़ैप्ड फ़ाइलों को संग्रहीत नहीं करना चाहता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.