मैंने इस प्रश्न और इस प्रश्न को देखा है , लेकिन वे उन लक्षणों को संबोधित नहीं करते हैं जो मैं देख रहा हूं।
मेरे पास एक बड़ी लॉग फ़ाइल (लगभग 600 एमबी) है जिसे मैं एक सेलुलर नेटवर्क में स्थानांतरित करने की कोशिश कर रहा हूं। क्योंकि यह यह सिर्फ करने के लिए जोड़ा जाता है एक लॉग फ़ाइल है (हालांकि यह केवल सम्मिलित करें के साथ एक SQLite डेटाबेस में वास्तव में है किया जा रहा है, तो यह नहीं है काफी है कि के रूप में सरल रूप में, लेकिन पिछले 4k पेज के अपवाद के साथ (या शायद एक कुछ) फ़ाइल हर बार समान होती है। यह महत्वपूर्ण है कि केवल परिवर्तन (और जो भी चेकसम को प्रेषित करने की आवश्यकता है) वास्तव में भेजे जाएं, क्योंकि डेटा कनेक्शन पैमाइश है।
फिर भी जब मैं एक अनमीटर्ड कनेक्शन (उदाहरण के लिए फ्री वाईफाई हॉटस्पॉट) पर एक परीक्षण करता हूं, तो मुझे स्पीड-अप या कम किए गए डेटा ट्रांसफर को देखा या रिपोर्ट नहीं किया जाता है। एक धीमे वाईफाई कनेक्शन पर मैं 1MB / s या उससे कम के आदेश पर देखता हूं, रिपोर्ट करता है कि स्थानांतरण में लगभग 20 मिनट लगने वाले हैं। एक तेज वाईफाई कनेक्शन पर मुझे एक समान तेज गति दिखाई देती है, लेकिन स्पीडअप की कोई रिपोर्ट नहीं है, और स्थानांतरण का दूसरा प्रयास (जो अब तेज होना चाहिए क्योंकि दो फाइलें समान हैं) अब कोई अंतर नहीं दिखाती हैं।
मेरे द्वारा उपयोग की जा रही संवेदनशील जानकारी को हटाने के लिए (sanitized) कमांड है:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
अंत में मुझे जो आउटपुट मिलता है वह इस तरह दिखता है:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
इसमें किसी भी तरह के स्पीडअप का जिक्र नहीं है।
मुझे संदेह है कि समस्या निम्नलिखित में से एक हो सकती है:
- मुझे कुछ कमांड लाइन विकल्प याद आ रहे हैं। हालाँकि, मैन पेज को फिर से पढ़ने से लगता है कि डेल्टा ट्रांसफ़र डिफ़ॉल्ट रूप से सक्षम हैं: मैं केवल उन्हें अक्षम करने के लिए विकल्प देखता हूं।
- मैं सर्वर पर फ़ायरवॉल के पीछे होने के कारण ss पर rsync (एक अमानक पोर्ट पर भी) का उपयोग कर रहा हूँ जो केवल ssh की अनुमति देता है। मैंने स्पष्ट रूप से यह कहते हुए कुछ नहीं देखा है कि यदि rsync डेमॉन नहीं चल रहा है तो डेल्टा ट्रांसफ़र काम नहीं करेगा। मैंने "::" के बजाय "::" संकेतन का उपयोग करने की कोशिश की, लेकिन वह आदमी पृष्ठ "मॉड्यूल" क्या है, इसके बारे में बहुत स्पष्ट नहीं है, और मेरा आदेश अमान्य मॉड्यूल को निर्दिष्ट करने के लिए खारिज कर दिया गया है।
मैंने निम्नलिखित को खारिज कर दिया है:
- डेल्टा स्थानान्तरण एक स्थानीय नेटवर्क पर नहीं किया जाता है। खारिज कर दिया क्योंकि मैं इंटरनेट पर स्थानांतरण करने की कोशिश कर रहा हूं
- चेकसम गणना के कारण ओवरहेड। मैंने इस व्यवहार को एक तेज़ और धीमे वाईफ़ाई कनेक्शन पर देखा है और अंतरण दर बाध्य नहीं लगती है।
rsync --stats
भी इस्तेमाल कर सकते हैं , और भी -v -v
अधिक वर्बोज़ आँकड़े प्राप्त करने के लिए। Rsync आपको बताएगा कि वहाँ कितना बेजोड़ डेटा था।
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
क्या आपने वास्तव में इसके साथ सत्यापन किया थाcmp
? या बेहतर, के साथxdelta
या कुछ और? यदि आप वास्तव में स्थानांतरण आकार को कम से कम करना चाहते हैं, तो पुराने और नए संस्करणों को स्थानीय रूप से रखें, ताकि आप स्थानीय रूप से (rsync के अलावा किसी अन्य चीज़ के साथ) कम से कम द्विआधारी अंतर की गणना कर सकें और केवल यह सुनिश्चित कर सकें कि पैमाइश के संबंध में चेकसम को भेजना नहीं है। द्विआधारी-फ़ाइल स्तर के बजाय डेटाबेस-रिकॉर्ड स्तर पर ऐसा करना शायद बेहतर भी है, जैसा कि अपमानजनक सुझाव देता है।