कैसे? या टीएल; डीआर
मैंने जो सबसे तेज़ तरीका पाया है, वह संयोजन है tar
, mbuffer
और ssh
।
उदाहरण के लिए:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
इसका उपयोग करके मैंने 1Gb लिंक पर 950 एमबी / एस से अधिक निरंतर स्थानीय नेटवर्क स्थानान्तरण प्राप्त किया है। प्रत्येक टास्क कमांड में पथों को बदलें जो आप स्थानांतरित कर रहे हैं उसके लिए उपयुक्त हो।
क्यों? mbuffer!
एक नेटवर्क पर बड़ी फ़ाइलों को स्थानांतरित करने में सबसे बड़ी अड़चन है, अब तक, डिस्क I / O। इसका उत्तर है mbuffer
या buffer
। वे काफी हद तक समान हैं लेकिन mbuffer
कुछ फायदे हैं। डिफ़ॉल्ट बफ़र का आकार 2MB के लिए mbuffer
और 1MB के लिए है buffer
। बड़े बफ़र्स कभी खाली नहीं होने की अधिक संभावना है। एक ब्लॉक आकार चुनना जो लक्ष्य और गंतव्य फाइलसिस्टम दोनों पर देशी ब्लॉक आकार का सबसे कम सामान्य गुण है, सबसे अच्छा प्रदर्शन देगा।
बफ़रिंग वह चीज़ है जो सभी अंतर बनाती है! यदि आपके पास है तो इसका उपयोग करें! यदि आपके पास यह नहीं है, तो इसे प्राप्त करें! (m}?buffer
प्लस का उपयोग करना अपने आप में किसी भी चीज़ से बेहतर है। यह लगभग सचमुच धीमी नेटवर्क फ़ाइल स्थानांतरण के लिए एक रामबाण है।
यदि आप एक से अधिक फ़ाइलों tar
को एक ही डेटा स्ट्रीम में "गांठ" करने के लिए स्थानांतरित कर रहे हैं । यदि यह एक एकल फाइल है जिसका आप उपयोग कर सकते हैं cat
या I / O पुनर्निर्देशन कर सकते हैं । tar
बनाम ओवरहेड cat
सांख्यिकीय रूप से महत्वहीन है, इसलिए मैं हमेशा उपयोग करता हूं tar
(या zfs -send
जहां मैं कर सकता हूं) जब तक कि यह पहले से ही एक टारबॉल न हो । इनमें से किसी की भी आपको मेटाडेटा देने की गारंटी cat
नहीं है (और विशेष रूप से नहीं)। यदि आप मेटाडेटा चाहते हैं, तो मैं इसे आपके लिए एक अभ्यास के रूप में छोड़ दूँगा।
अंत में, ssh
परिवहन तंत्र के लिए उपयोग करना सुरक्षित है और बहुत कम ओवरहेड किया जाता है। फिर, ssh
बनाम nc
का उपरि सांख्यिकीय रूप से महत्वहीन है।