@ पोदो का उत्तर अच्छा है, लेकिन एक बफर और अच्छे संपीड़न के साथ गति बढ़ा सकता है और एक प्रगति पट्टी जोड़ सकता है।
अक्सर नेटवर्क अड़चन है और गति समय के साथ बदलती रहती है। इसलिए, यह नेटवर्क पर भेजने से पहले डेटा को बफर करने में मदद करता है। इसके साथ किया जा सकता है pv
।
इसके अतिरिक्त, एक आमतौर पर एक उचित संपीड़न एल्गोरिथ्म के साथ गति बढ़ा सकता है। Gzip (जैसे ऊपर उपयोग किया गया) एक तेज संपीड़न एल्गोरिथ्म है, लेकिन सामान्य रूप से zstandard ( zstd
) और (उच्च संपीड़न अनुपात LZMA / LZMA2 के लिए xz
) बेहतर संपीड़ित करेगा और उसी समय तेज हो जाएगा। नया xz और zstd मल्टी कोर समर्थन पहले से ही बनाया गया है। । कई कोर पिग के साथ गज़िप का उपयोग करने के लिए इस्तेमाल किया जा सकता है।
एक नेटवर्क पर एक प्रगति बार, बफरिंग और zstandard संपीड़न के साथ डेटा भेजने के लिए एक उदाहरण है:
tar cf - . | pv -perabs $(du -sk . | cut -f 1)K | zstd -14 --long=31 -T0 | pv -qCB 512M | ssh user@host "cd /wherever && pv -qCB 512M | zstd -cd -T0 --long=31 | tar xf -"
पहली pv
प्रगति ( पी ), अनुमानित समय ( ई ), स्थानांतरण दर ( आर ), औसत दर ( ए ), कुल स्थानांतरित बाइट्स ( बी ) को दिखाना है । कुल आकार के साथ होने का अनुमान है du
और आकार विकल्प (करने के लिए जोड़ा रों )। प्रगति को संपीड़न और बफरिंग से पहले मापा जाता है, इसलिए यह बहुत सटीक नहीं है, लेकिन फिर भी सहायक है।
zstd
संपीड़न सेटिंग 14 के साथ प्रयोग किया जाता है । नेटवर्क के आधार पर इस संख्या को कम या बढ़ाया जा सकता है और CPU की गति इसलिए zstd नेटवर्क की गति से थोड़ी तेज होती है। हैसवेल 3.2 GHz CPU 14 पर चार कोर के साथ लगभग 120 MB / s की गति देता है। उदाहरण में, लंबी मोड 31 (2 जीबी विंडो का उपयोग करता है, बहुत अधिक रैम की आवश्यकता होती है, लेकिन डेटाबेस डंप को संकुचित करने के लिए बहुत अच्छा उदा।) का उपयोग किया जाता है। T0 विकल्पों कोर की संख्या के धागे की राशि निर्धारित करता है। एक को पता होना चाहिए कि लंबी मोड के साथ ये सेटिंग्स बहुत मेमोरी का उपयोग करती हैं।
Zstd के साथ एक समस्या यह है कि अधिकांश ऑपरेटिंग सिस्टम संस्करण> = 1.3.4 के साथ शिप नहीं होते हैं। यह संस्करण उचित मल्टी कोर और लंबे समर्थन के लिए आवश्यक है। यदि उपलब्ध नहीं है, तो इसे बस के साथ https://github.com/facebook/zstd से संकलित और स्थापित किया जा सकता है make -j4 && sudo make install
। Zstd के बजाय, कोई भी xz या pigz का उपयोग कर सकता है। Xz धीमा है, लेकिन बहुत अच्छी तरह से (धीमी गति से कनेक्शन पर अच्छा) संपीड़ित करता है, pigz / gzip तेज़ है लेकिन इतनी अच्छी तरह से संपीड़ित नहीं करता है।
pv
तब फिर से उपयोग किया जाता है, लेकिन बफरिंग के लिए ( q
चुप रहने के C
लिए, बिना किसी ब्याह मोड के लिए [हमेशा बफरिंग के लिए आवश्यक है] और B
बफर सेट करने के लिए)।
उदाहरण में रिसीवर की तरफ एक बफर का भी उपयोग किया जाता है। यह अक्सर अनावश्यक होता है (क्योंकि डीकंप्रेसन और हार्ड डिस्क लेखन की गति नेटवर्क की गति से सबसे अधिक समय होती है), लेकिन आमतौर पर नुकसान नहीं पहुंचाता है।