क्या rsync स्पीड बैकअप के साथ संपीड़न विकल्प -z है


37

में rsync, -zस्थानांतरण के दौरान फ़ाइल डेटा को संपीड़ित करेगा।

अगर मैं सही तरीके से समझता हूं, -zतो स्थानांतरण से पहले फ़ाइलों को संपीड़ित करें और फिर स्थानांतरण के बाद उन्हें विघटित करें। क्या संपीड़न के कारण स्थानांतरण के दौरान समय कम हो जाता है संपीड़न और अपघटन के लिए समय कम हो जाता है?

क्या इस सवाल का जवाब इस बात पर निर्भर करता है कि क्या मैं USB (2.0 या 3.0) के माध्यम से किसी बाहरी hdd पर बैकअप लेता हूं, या इंटरनेट पर किसी सर्वर द्वारा?


यह भी याद रखें कि यदि संपीड़ित फ़ाइल मूल फ़ाइल से आकार में अधिक भिन्न नहीं है, तो यह बहुत बड़ा ओवरहेड हो सकता है।
हेमायला

1
हेमायल क्या कहता है, इसके बारे में विस्तार से बताने के लिए, यदि सामग्री काफी हद तक ऐसी सामग्री है जो पहले से ही संपीड़ित प्रारूप (जेपीईजी, एमपीईजी, डिस्ट्रो पैकेज आदि) में है, तो संपीड़न बहुत कम प्रभावी है। मुझे man rsyncलगता है कि वास्तव में फ़ाइल प्रत्यय की एक सूची है जो कि (देखें ) के साथ भी संकुचित नहीं होगी-z--skip-compress
गोल्डीलॉक्स

जवाबों:


46

यह एक सामान्य प्रश्न है। क्या समापन बिंदु पर संपीड़न और विघटन एक लिंक की प्रभावी बैंडविड्थ में सुधार करता है?

एंडपॉइंट्स पर कम्प्रेशन और डीकंप्रेसन करने वाले लिंक का प्रभावी (माना जाता है) एक कार्य है:

  1. कितनी तेजी से आप संपीड़ित कर सकते हैं (आपकी CPU गति)
  2. आपके नेटवर्क की वास्तविक बैंडविड्थ

फ़ंक्शन को इस 3D ग्राफ़ के साथ वर्णित किया गया है, जिसे आप अपनी विशेष स्थिति के लिए परामर्श करना चाहते हैं:

यहाँ छवि विवरण दर्ज करें

ग्राफ http://www.linuxjournal.com/ द्वारा 2005 के कंप्रेशर टूल्स की तुलना में उत्पन्न होता है ।


1
आपका डेटा प्रकार भी एक प्रमुख कारक है (सूची से गायब होने वाला कारक # 3)। जुड़ा हुआ लेख डेटा के एक विशिष्ट मिश्रण का उपयोग करता है। तुम्हारा होना ठेठ नहीं हो सकता। यदि आप 100% ज़िप फ़ाइलों (या किसी भी पूर्व-संपीड़ित डेटा) को सिंक कर रहे हैं, तो आप सम्भवत: संपीड़न नहीं चाहते हैं। यदि आप 100% पाठ फ़ाइलों को सिंक कर रहे हैं, तो हो सकता है कि आपका नेटवर्क तेज़ हो और आपका CPU धीमा हो, भले ही आप कंप्रेस करें। सभी 3 कारकों को बुनें।
रिचर्ड ब्राइटवेल

13

यदि आपके पास बहुत धीमा कनेक्शन है (जीपीआरएस के बारे में सोचें) तो आप निश्चित रूप से जितना संभव हो सके डेटा को संपीड़ित करना चाहते हैं, अन्यथा आपका कनेक्शन चीजों को धीमा कर देगा।

यदि आपके पास एक बहुत धीमा सीपीयू और एक तेज़ कनेक्शन (एक एम्बेडेड नेटवर्क डिवाइस की तरह) है, तो आप आमतौर पर अपने डेटा को संपीड़ित नहीं करना चाहते हैं, अन्यथा आपका सीपीयू चीजों को धीमा कर देगा।


3

इस बात पर निर्भर करता है कि आपका डेटा कितना सिक्योर है और आपके सोर्स और डेस्टिनेशन की प्रोसेसिंग पावर कितनी है। मेरे अनुभव में एक पूर्ण डिस्क बैकअप अपने मूल आकार का लगभग 30-50% तक संपीड़ित करेगा, इसलिए इसे शॉट देने के लायक हो सकता है। अन्यथा, संपीड़न के साथ परेशान मत करो। यह आपके संपीड़न दर का परीक्षण करने pigz -c <your file> | wc -cऔर अपने मूल आकार के साथ लौटे आकार की तुलना करने के लिए लायक हो सकता है ।


2

हाँ, कनेक्शन की गति निर्धारित करती है कि गति क्या है। यह केवल USB बैकअप के लिए ओवरहेड होगा, क्योंकि डिस्क डेटा को फुलाती नहीं है, लेकिन प्रक्रिया जो डेटा लिखती है। तो वही मशीन जो इसे पढ़ती है और उसे अपवित्र करती है, उसे भी फुलाना और लिखना होता है। रुंटस अभी भी दो प्रक्रियाएं हैं जो मुझे लगता है लेकिन एक प्रक्रिया से दूसरी प्रक्रिया में डेटा को भेजने के लिए आपकी मेमोरी काफी तेज है और सीपीयू को इसे संपीड़ित करने में अधिक समय की आवश्यकता है (इसे उसी मेमोरी में पढ़ते हुए जो बाद में इसे सौंप देता है :)।

जब आप एक प्रेषक और एक रिसीवर rsync और बीच में कुछ धीमी नेटवर्क है, तो संपीड़न केवल मदद करता है। 1Gbit पहले से ही काफी तेज़ हो सकता है जब आपके पास उदाहरण के लिए एक स्थानीय NAS हो, 10Gbit पहले से ही कच्चा SATA गति है। इसलिए कंप्रेशन की जरूरत तभी होती है जब आपके पास 100Mbit या इससे कम कनेक्टिविटी हो और यह केवल तभी समझ में आता है जब कंप्रेस्ड कंप्रेसिबल हो।

मुझे लगता है कि rsync ध्यान दे सकता है कि यह दो मशीनों पर नहीं चलता है, लेकिन एक और कम्प्रेशन संपीडित होता है लेकिन निश्चित नहीं है।


1

tl; धी में धीमी गति से स्थानांतरण लिंक, सेक, अन्यथा नहीं। नीचे एक संपीड़न गति परीक्षण, एक बैंडविड्थ रूपांतरण उपकरण का लिंक और कुछ जानकारी है।

rsyncयदि इंटरमीडिएट लिंक "धीमा पर्याप्त" है, तो संपीडन का उपयोग केवल तभी गति देगा, जब कि एक छोर में मौजूद मशीन संचार लिंक को संतृप्त करने के लिए पर्याप्त त्वरित रूप से संपीड़ित डेटा स्ट्रीम का उत्पादन करने में सक्षम हो।

तो, सबसे धीमी कड़ी क्या है जिस पर मुझे कुछ भी हासिल करने के लिए संपीड़न का उपयोग करना चाहिए?

निम्नलिखित एक बहुत ही अवैज्ञानिक परीक्षा है, जो यह बताएगी कि कितनी जल्दी gzipडेटा का उत्पादन कर सकती है, और इसका मतलब यह है कि क्या आपको अपने नेटवर्क के थोक हस्तांतरण को सामान्य रूप से संपीड़ित करना चाहिए।

इनपुट डेटा परीक्षण के परिणाम को बहुत बदल देगा । मैं अपने कंप्यूटर पर एक असम्पीडित (!) नियमित फाइल का उपयोग कर रहा हूं जो कि आमतौर पर नेटवर्क पर स्थानांतरित किए जाने वाले डेटा के प्रकार का प्रतिनिधि हो सकता है। /dev/zero(असीमित शून्य का उत्पादन) का उपयोग करना भ्रामक होगा क्योंकि जीरो की एक धारा को संपीड़ित करना बहुत आसान /dev/randomहोगा , और उपयोग करना विपरीत कारण के लिए भ्रामक होगा। इसलिए इसके बजाय मैं अपनी $HOME/localनिर्देशिका की एक टार फ़ाइल का उपयोग करता हूं , जिसमें सॉफ्टवेयर है जो मैंने अपने में इंस्टॉल किया है $HOME। फ़ाइल अपने आप में असम्पीडित है, लेकिन इसमें बाइनरी फ़ाइलों, छोटी संपीड़ित फ़ाइलों और स्रोत / पाठ फ़ाइलों का मिश्रण शामिल है, और क्या मैं इसे डिफ़ॉल्ट सेटिंग के साथ संपीड़ित करूंगा, gzipयह 64% से 64 MiB से 22 MiB तक सिकुड़ जाएगा।

$ gzip -c local.tar | dd of=/dev/null
43092+4 records in
43093+1 records out
22063854 bytes transferred in 2.819 secs (7825741 bytes/sec)

मैं यह महसूस करने के लिए कुछ समय करता हूं कि औसत क्या हो सकता है, और यह लगभग 7800000 बाइट्स / एस के लिए आता है।

फिर मैं एक नेटवर्क बैंडविड्थ कैलकुलेटर का उपयोग करता हूं यह देखने के लिए कि यह किस रूप में परिवर्तित होता है। इस विशेष मामले में, यह एक "100Mb ईथरनेट" वायर्ड लिंक की क्षमता के तहत होता है, "VDSL डाउनलोड" इंटरनेट अपलिंक की तुलना में तेज़, "802.11 [a / g]" वायरलेस लिंक की तुलना में थोड़ा तेज, और कहीं-कहीं "ब्लूटूथ v3.0" (धीमा) और "यूएसबी 2.0" (तेज) के बीच में।

इसका मतलब यह है कि अगर मैं किसी भी चीज से अधिक तेजी से कम्प्रेशन का उपयोग कर रहा हूं , तो सम्पीडन संभवतः फ़ाइल के हस्तांतरण को धीमा कर देगा ।

rsyncसम्पीडन करने के लिए ठीक उसी लाइब्रेरी का उपयोग नहीं किया जा सकता है gzip, लेकिन ऊपर आपको कम से कम एक संकेत देगा।

rsyncहालांकि संपीड़न से अधिक, जैसा कि आप जानते हैं, और वास्तविक गति में वृद्धि केवल [बिट्स] फाइलों को स्थानांतरित करने से होती है।

मेरे अपने अनुभव में, rsyncपिछले 10 वर्षों में कम से कम लाभकारी उपयोग हुआ है, क्योंकि नेटवर्क की बैंडविड्थ बढ़ी है (जहां मैं हूं)।

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

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