लिनक्स सर्वर के बीच फाइलों के तेजी से हस्तांतरण के लिए सबसे आसान तरीका?


16

मुझे एक CentOS सर्वर से दूसरे में फाइल ट्रांसफर करने की आवश्यकता है। हर 10 मिनट में 5 एमबी फाइल ट्रांसफर करेगा। एन्क्रिप्शन की जरूरत नहीं है।

फ़ाइलों के तेजी से हस्तांतरण के लिए एक आसान क्या है?

क्या ftp की तुलना में कुछ सरल है?

धन्यवाद!


1
मुझे विश्वास है कि netcat पर टारस होगा ... हेह हे ...: serverfault.com/questions/18125/…
इवान एंडरसन

चूंकि मुझे एन्क्रिप्शन की आवश्यकता नहीं है, लेकिन गति की आवश्यकता है, इसलिए मैं rsync पसंद करता हूं।
एलेक्स एल

मैंने अभी सीखा है कि http स्थानान्तरण में बहुत अधिक ओवरहेड नहीं है, इसलिए शायद मैं इसका उपयोग कर सकता हूं।
एलेक्स एल

अपने प्रश्न के उत्तर को संपादित न करें, इसे उत्तर के रूप में पोस्ट करें। पीछे लेना।
HopelessN00b

"तेज़" के लिए भी देखें unix.stackexchange.com/questions/48399/…
rogerdpack

जवाबों:


25

rsync

मैं ftp या tftp इस्तेमाल करने से पहले rsync का उपयोग करता हूं।

अधिक विकल्प और (मेरे अनुभव में) अधिक विश्वसनीय स्थानांतरण।


1
मैंने यह भी पाया है कि rsync आम तौर पर किसी भी चीज (scp, cifs, nfs) की तुलना में अधिक थ्रूपुट प्राप्त करता है
Ophidian

http स्थानान्तरण के बारे में क्या?
एलेक्स एल

@Ophidian क्या आप डेमॉन के रूप में rsync का उपयोग करते हैं? अन्यथा यह कैसे scp से तेज हो सकता है, क्योंकि ssh का उपयोग करता है और वहाँ एन्क्रिप्शन है।
बाल्की

@ बाल्की हां, rsync डेमॉन। यह विशेष रूप से गपशप नहीं है, लाइन पर डिस्क से डेटा खिलाने का एक अच्छा काम करता है, और यह अनुरोध को पूरा करने के लिए आवश्यक के रूप में बहुत कम काम करता है (उदाहरण के लिए पाठ फ़ाइलों के लिए भिन्न होता है)।
ओफिडियन

21

टार ओवर ssh ठीक है, लेकिन टीसीपी पर netcat के माध्यम से टार कम-ओवरहेड के बारे में है जैसा कि आप प्राप्त कर सकते हैं! यदि यह एक बार की बात है, तो इसे एक शॉट दें:

रिसीवर पर:

nc -l -p 8989 | tar x

प्रेषक पर:

tar cf - /source-path | nc (receiving host ip address) 8989

यदि यह ऐसा कुछ है जो आप नियमित रूप से करने जा रहे हैं, तो मैं शायद rsync का उपयोग करूंगा।



इवान न पढ़ने के लिए आप पर भी। हा हा हा! यह वास्तव में एक बार की बात नहीं है। उन्होंने कहा कि वह हर 10 मिनट में 5 एमबी फाइलें स्थानांतरित करने जा रहे हैं। शायद मोर्स कोड के माध्यम से भेजना एक अच्छा विकल्प होगा? ;-) (ध्यान दें: इवान और खुद के बीच निजी मजाक)
KPWINC

8

दो लोगों ने ssh पर टार का उल्लेख किया है, लेकिन यह नहीं बताया कि यह कैसे करना है। रिकॉर्ड के लिए, मूल प्रक्रिया को चलाना है:

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

या, यदि आप प्राप्त अंत से स्थानान्तरण शुरू करना चाहते हैं:

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

इवान के नेटकाट समाधान पर इस तरह से करने का लाभ यह है कि पूरी चीज एक कंप्यूटर से शुरू की जा सकती है; आपको दो नेटकैट इनवोकेशन को समन्वित करने की आवश्यकता नहीं है। यदि आपको स्वचालित रूप से चलाने के लिए इसकी आवश्यकता है, तो आप एक ssh कुंजी सेट कर सकते हैं जो आपको पासफ़्रेज़ के बिना कनेक्शन बनाने देती है, और इन कनेक्शनों के लिए उस कुंजी का उपयोग करें।

ssh के पास अपनी डेटा स्ट्रीम को संपीड़ित करने के लिए एक -C विकल्प है, या आप GNU टार की बिल्ट कंप्रेसिंग क्षमता का उपयोग कर सकते हैं:

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

रुपीक्स एक अन्य विकल्प है, लेकिन इसका मजबूत सूट उन फ़ाइलों को अद्यतन करने में है जो पहले से ही प्राप्त अंत पर मौजूद हैं। मैंने पाया है कि यह scp या tar / ssh की तुलना में धीमा है जब इसका उपयोग फ़ाइलों को स्थानांतरित करने के लिए होता है जो पहले से ही दूसरे छोर पर मौजूद नहीं हैं।


1
+1 क्या, आपका मतलब है कि हर कोई सहज रूप से नहीं जानता कि कैसे ssh पर टार करना है? अजीब। :)
अराजकता

टार, अपने आप में, विश्वसनीय नहीं है - एसएसएच (टीएलएस) के साथ कोई अखंडता की जाँच नहीं है, क्योंकि आपको डेटा में उड़ान परिवर्तन का पता लगाने की टीएलएस की क्षमता के कारण अखंडता मिलती है। रुपीक्स एक बेहतर विकल्प और रुपीनेस है क्योंकि यह एन्क्रिप्शन के बिना बेहतर अखंडता की जाँच करेगा; ओपी ने कहा कि एन्क्रिप्शन आवश्यक नहीं था।
Kilo

क्या अखंडता की जाँच की आवश्यकता है? टीसीपी और ssh परतें विश्वसनीय डेटा परिवहन प्रदान करती हैं। यदि आप यह मान रहे हैं कि टार में कीड़े हो सकते हैं, तो आपको उसी तरह से rsync का इलाज करना होगा। मैं वास्तव में प्रोटोकॉल मुद्दों के कारण मुझ पर फ्रीज स्थानान्तरण rsync था। मैं एक टार / अनटार पाइपलाइन को कभी याद नहीं करता।
केनस्टर

6

मैं का उपयोग करें scpया tarअधिक ssh, ईमानदारी से। एन्क्रिप्शन धीमा काम करता है, लेकिन सेटअप और उपयोग में आसानी, विश्वसनीयता और (विषय के अनुसार, निश्चित रूप से) परिचित मुझे हिट लेने के लिए तैयार करते हैं, जब तक कि मैं वास्तव में नहीं उस गति की आवश्यकता ।

आप डिफ़ॉल्ट से भी तेज़ सिफर का उपयोग करने के लिए कहकर ssh ट्रांसफ़र को तेज़ कर सकते हैं। डिफ़ॉल्ट आमतौर पर है 3desऔर आप आमतौर पर कर सकते हैं -c des, ताकि स्पष्ट रूप से तेज हो जाएगा, और-c blowfish साथ ही तेजी से प्रतिनिधित्व किया जाता है, हालांकि मैंने इसे सटीक रूप से परीक्षण नहीं किया है।

(SSHv1 के दिनों में, आप अक्सर कर सकते थे -c none, लेकिन मुझे लगता है कि किसी ने निर्णय लिया था कि बुरा जूजू था)।


4

यदि आपको scp / ssh से गुजरना है, तो मेरे प्रयोग बताते हैं कि इन दिनों डिफ़ॉल्ट रूप से सबसे तेज़ साइपर सक्षम है RC4। आप अपने ssh / scp कमांड में ' -c arcfour ' के माध्यम से सिफर निर्दिष्ट करते हैं :

प्रारंभिक प्रति के लिए:

  • scp -c arcfour -r foo/ desthost:/destdir

अपडेट के लिए:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

3

Rsync जाने का एक अच्छा तरीका है क्योंकि अगर आप खुद को एक ही फाइल को एक से अधिक बार ट्रांसफर करते हुए पाते हैं तो यह कॉपी को गति देगा, जैसा कि मैन पेज से इस उद्धरण के साथ दिखाया गया है।

   rsync is a program that behaves in much the same way that rcp does, but
   has many more options and uses  the  rsync  remote-update  protocol  to
   greatly  speed  up  file  transfers  when the destination file is being
   updated.
   The rsync remote-update protocol allows rsync to transfer just the dif-
   ferences between two sets of files across the network connection, using
   an efficient  checksum-search  algorithm  described  in  the  technical
   report that accompanies this package.

2

एफ़टीपी बहुत सरल है, लेकिन एक सरल तरीका यह भी हो सकता है कि एक मशीन पर एनएफएस हिस्सा बनाकर दूसरे पर माउंट किया जाए। फिर फ़ाइलों की प्रतिलिपि बनाने में एक निर्देशिका से दूसरे में cp करना शामिल होगा।


आवश्यकताओं के आधार पर। मैं उदाहरण के लिए इंटरनेट पर NFS का उपयोग नहीं करूंगा।
काइल हॉजसन

1
अच्छी बात। उस स्थिति में मैं rsync की सलाह दूंगा क्योंकि यह बाधित होने पर फिर से शुरू हो सकता है। यह भी क्योंकि यह केवल स्रोत और गंतव्य के बीच डेल्टा को स्थानांतरित करता है।
सवोगन

सवाल बहुत सामान्य था, मुझे स्वोगन द्वारा पोस्ट की गई आत्मा पसंद है, विशेष रूप से उस लेखक ने उल्लेख किया है कि सबसे सरल समाधान की आवश्यकता है और एन्क्रिप्शन की आवश्यकता नहीं है
इंटीग्रेटर

2

यदि आप गति चाहते हैं तो आप नेटकैट और टार का उपयोग कर सकते हैं। यह एक स्थानीय नेटवर्क पर ssh, rsync, या scp की तुलना में तेज़ होगा जहाँ एन्क्रिप्शन चिंता का विषय नहीं है। Google "netcat टार"।

DestinationServer

nc -l -p 7878 | tar -C /target/dir -xzf -

SourceServer

tar -cz /source/dir | nc DestinationServer 7878

यह स्पष्ट रूप से आवश्यक है कि netcat वास्तव में स्थापित है। अधिक जानकारी के लिए Google "netcat टार"।


1

मेरा मानना ​​है कि आपने अपनी समस्या पहले ही हल कर ली है, लेकिन यदि आपका ssh दूसरे पोर्ट पर काम करता है (मानक पोर्ट 22 पर नहीं) तो आप इसका उपयोग कर सकते हैं

rsync -avz --rsh = 'ssh -pXXXXX' / स्थानीय / dir / root@192.168.1.2: / दूरस्थ / dir

नोट: - XXXXX को अपने पोर्ट नंबर से बदलें - 192.16.1.2 को सही रिमोट सर्वर आईपी से बदलें


-1

https://www.npmjs.org/package/gist-cli

https://github.com/settings/applications#personal-access-tokens

या यह एक:

https://github.com/defunkt/gist

अपलोड और डाउनलोड करने के लिए जिस्ट कमांड का उपयोग करें


कृपया लिंक ही नहीं, स्पष्टीकरण भी दें। यदि लिंक अमान्य हो जाते हैं तो आपका उत्तर अभी भी उपयोगी हो सकता है।
एंड्रयू शुलमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.