बहुत सारी फ़ाइलों को स्थानांतरित करने का सबसे तेज़ और सबसे विश्वसनीय तरीका क्या है?


10

मैं 90k कुल 100k फ़ाइलों को स्थानांतरित करने की कोशिश कर रहा हूं। अभी मैं rsync डेमॉन का उपयोग कर रहा हूं लेकिन इसकी धीमी 3.4mb / s है और मुझे इसे कई बार करने की आवश्यकता है। मैं सोच रहा हूं कि मेरे पास क्या विकल्प हैं जो इंटरनेट पर 100 मीबिट कनेक्शन को अधिकतम करेंगे और बहुत विश्वसनीय होंगे।


2
आप अपने कनेक्शन का लगभग एक तिहाई प्राप्त कर रहे हैं - यह सम्मानजनक है, लेकिन महान नहीं है। इलेक्ट्रान के उड़ने से कितनी दूरी पर फाइलें स्थानांतरित हो रही हैं?
शेन मैडेन

दो सर्वरों के बीच 50ms विलंबता।
गुप्त 2

5
मैंने एक बार फ़ाइलों का एक बहुत देखा hyperboleandahalf.blogspot.com/2010/04/…
Smudge

यदि आप rsync डेमॉन का उपयोग कर रहे हैं, तो कोई ssh शामिल नहीं है, है ना? तब स्पष्टीकरण मेजबान के बीच की बुनियादी संरचना है। मेजबानों के बीच की गति का परीक्षण करने के लिए आप netperf या iperf या flowgrind आज़मा सकते हैं। यदि यह परीक्षण आपको उच्च अंतरण दर प्रदान करता है, तो आपको यह देखना चाहिए कि rsync कैसे चीजों को धीमा कर रहा है: सर्वर पर i / o पढ़ें, क्लाइंट पर i / o, कई छोटी फाइलें, फाइल सिस्टम आदि लिखें
AndreasM

जवाबों:


11

क्या आपने स्नीकरनेट माना है ? बड़े डेटा सेट के साथ रातोंरात शिपिंग अक्सर इंटरनेट के माध्यम से स्थानांतरित होने की तुलना में तेज और सस्ता होने वाला है।


10
"कभी भी हाईवे से नीचे गिरने वाले टेपों से भरे स्टेशन वैगन की बैंडविड्थ को कम मत समझो।" - एएसटी
voretaq7

1
अच्छी तरह से, गीगाबिट लैन हार्डवेयर की सामर्थ्य को देखते हुए, यदि इसका LAN ट्रांसफर होता है, तो ईएसएटीए के माध्यम से एकल स्पिंडल के माध्यम से लिखने में लगने वाला समय यह सब आकर्षक नहीं है।
memnoch_proxy

10

कैसे? या टीएल; डीआर

मैंने जो सबसे तेज़ तरीका पाया है, वह संयोजन है 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का उपरि सांख्यिकीय रूप से महत्वहीन है।


कभी-कभी परिवहन के रूप में SSH का उपयोग करने में एन्क्रिप्शन ओवरहेड होता है। देखें: एन्क्रिप्शन के बिना मजबूत प्रमाणीकरण के साथ लिनक्स मशीनों के बीच फ़ाइलों को कॉपी करना
e'Hhite

2
यदि आपको आवश्यकता हो तो आप तेज एन्क्रिप्शन तंत्र का उपयोग कर सकते हैं। लेकिन आपको जरूरी नहीं कि इस थ्रू ssh को पाइप करना है। मैं -O और -I पोर्ट को दोनों तरफ mbuffer पर सेट करना पसंद करता हूं। यहां तक ​​कि अब यह दो आदेश हैं, आप एन्क्रिप्शन को छोड़ देते हैं और दोनों छोरों को बफ़र करके नेटवर्क बैंडविड्थ को अधिकतम करते हैं। मैं अपने स्थानीय LAN पर 720 + एमबीपीएस पर एक टार स्ट्रीम भेज रहा हूँtar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
0no42

2
@memnoch_proxy: यह एक अच्छा सुझाव है (जिसे मैंने वोट दिया है) लेकिन इस दिन और उम्र में जहां एनएसए एन्क्रिप्शन के जरिए डेटा सेंटरों (जैसे, Google और याहू) के बीच निजी डेटा लाइनों का दोहन कर रहा है, IMO, हमेशा एक अच्छी आदत बनाने के लिए है । प्रयोग करने sshसे वह सरल हो जाता है। उपयोग करना stunnel, socatया opensslबहुत काम करता है, लेकिन वे सरल हस्तांतरण के लिए स्थापित करने के लिए अधिक जटिल हैं।
bahamat

1
@ नौबत मुझे फिर से सवाल देखने के लिए धन्यवाद। मेरा सुझाव तभी उचित लगता है जब किसी वीपीएन पर स्थानांतरण हो सकता है। इंटरनेट हस्तांतरण के लिए, मैं निश्चित रूप से ssh का भी उपयोग करूंगा।
मेमोन्चप्रोक्सी

8

आप "rsync" का उल्लेख करते हैं, इसलिए मुझे लगता है कि आप लिनक्स का उपयोग कर रहे हैं:

आप एक टार या tar.gz फ़ाइल क्यों नहीं बनाते हैं? एक बड़ी फ़ाइल का नेटवर्क ट्रांसफर समय कई छोटे लोगों की तुलना में तेज़ है। आप चाहें तो इसे कंप्रेस भी कर सकते हैं ...

कोई संपीड़न के साथ टार:

स्रोत सर्वर पर:

tar -cf file.tar /path/to/files/

फिर प्राप्त होने वाले छोर पर:

cd /path/to/files/
tar -xf /path/to/file.tar

संपीड़न के साथ टार:

स्रोत सर्वर पर:

tar -czf file.tar.gz /path/to/files/

फिर प्राप्त होने वाले छोर पर:

cd /path/to/files/
tar -xzf /path/to/file.tar.gz

आप बस (tar | tar.gz) फ़ाइलों का वास्तविक हस्तांतरण करने के लिए rsync का उपयोग करेंगे।


केवल तभी संग्रह संग्रहीत करने के लिए उपलब्ध स्थान थे ..
Tebe

5

आप यहां बताए गए ट्रिक tarऔर sshट्रिक आजमा सकते हैं :

tar cvzf - /wwwdata | ssh root@192.168.1.201 "dd of=/backup/wwwdata.tar.gz"

यह निम्नलिखित के लिए फिर से लिखना चाहिए :

tar cvzf - /wwwdata | ssh root@192.168.1.201 "tar xvf -"

आप इस प्रक्रिया में --partialसुविधाओं को खो देंगे rsync, हालांकि। यदि फ़ाइलें बहुत बार बदलती नहीं हैं, तो धीमी गति से प्रारंभिक के साथ रहना rsyncअत्यधिक सार्थक हो सकता है, जबकि यह भविष्य में बहुत तेजी से आगे बढ़ेगा ।


2

आप rsync के विभिन्न संपीड़न विकल्पों का उपयोग कर सकते हैं।

-z, --compress              compress file data during the transfer
     --compress-level=NUM    explicitly set compression level
     --skip-compress=LIST    skip compressing files with suffix in LIST

द्विआधारी फ़ाइलों के लिए संपीड़न अनुपात बहुत कम है, इसलिए आप उन फ़ाइलों का उपयोग कर छोड़ सकते हैं --स्काइप-कंप्रेस ईएसओ, पहले से संग्रहीत और संपीडित टारगेट आदि।


-6

मैं SFTP का बहुत बड़ा प्रशंसक हूं। मैं अपने मुख्य कंप्यूटर से मीडिया को अपने सर्वर पर स्थानांतरित करने के लिए SFTP का उपयोग करता हूं। मुझे LAN पर अच्छी गति मिलती है।

SFTP विश्वसनीय है, मैं इसे एक शॉट दूंगा, क्योंकि इसे स्थापित करना आसान है, और यह कुछ मामलों में तेज हो सकता है।


5
FTP को मरने की जरूरत है। यह अनएन्क्रिप्टेड है, यह रुकावट को अच्छी तरह से नहीं संभालता है, और इसके लिए कम से कम आधा दर्जन व्यवहार्य विकल्प हैं जो पूरी तरह से चूसते हैं।
एमडीमैरा

1
कभी SFTP के बारे में सुना है?
Tillman32

8
हां, आपके पास है? यह किसी भी तरह से FTP प्रोटोकॉल से संबंधित नहीं है, सिवाय नाम और तथ्य के कि यह फाइलों को इधर-उधर करता है।
एमडीएमरा

5
जब फ़ायरवॉल ट्रेस किया जाता है तो FTP भी बहुत अविश्वसनीय रूप से अविश्वसनीय होता है (यह फ़ायरवॉल से एक समय पहले की तारीख है जब आपके क्लाइंट ने बैक-कनेक्शन को स्वीकार करने के लिए एक यादृच्छिक पोर्ट खोला था, और उस सीमा पर काम करने के लिए पैसिव और एक्सटेंडेड पैसिव एफ़टीपी की हैकरी बस है: हैकरी)
voretaq7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.