कैसे `scp`` rsync` से भिन्न होता है?


241

घोस्ट ब्लॉगिंग स्थापित करने के बारे में एक लेख कहता है कि scpमेरी स्थानीय मशीन से रिमोट सर्वर पर कॉपी करने के लिए उपयोग करें:

scp -r ghost-0.3 root@*your-server-ip*:~/

हालाँकि, Railscast 339: शेफ सोलो बेसिक्सscp विपरीत दिशा में (दूरस्थ सर्वर से स्थानीय मशीन पर) कॉपी करने के लिए उपयोग करता है:

scp -r root@178.xxx.xxx.xxx:/var/chef .

उसी रेलकास्ट में, जब लेखक फ़ाइलों को दूरस्थ सर्वर (पहले उदाहरण के समान दिशा) में कॉपी करना चाहता है, तो वह उपयोग करता है rsync:

rsync -r . root@178.xxx.xxx.xxx:/var/chef

rsyncयदि scpदोनों दिशाओं में नकल होगी तो कमांड का उपयोग क्यों करें ? कैसे scpअलग है rsync?


सरल और हमेशा एन्क्रिप्टेड होने के अलावा, किसी ने कुछ भी नहीं बताया है कि "rsync -aA" की तुलना में scp बेहतर कर सकता है। मुझे पसंद है "rsync -aAX --delete स्रोत डेस्ट"। दो तरह से सिंक के लिए चेकआउट bsync।
लीमाची

जवाबों:


345

इन उपकरणों के बीच प्रमुख अंतर यह है कि वे फ़ाइलों की प्रतिलिपि कैसे बनाते हैं।

scpमूल रूप से स्रोत फ़ाइल पढ़ता है और इसे गंतव्य पर लिखता है। यह स्थानीय स्तर पर, या किसी नेटवर्क पर एक सादा रेखीय प्रतिलिपि बनाता है।

rsyncफ़ाइलों को स्थानीय रूप से या किसी नेटवर्क पर भी कॉपी करता है। लेकिन यह ऑपरेशन को बहुत तेज करने के लिए एक विशेष डेल्टा ट्रांसफर एल्गोरिदम और कुछ अनुकूलन का इस्तेमाल करता है। कॉल पर विचार करें।

rsync A host:B
  • rsyncफ़ाइलों के आकार और A और B दोनों के संशोधन टाइमस्टैम्प की जाँच करेगा , और यदि वे मेल खाते हैं तो आगे की प्रक्रिया को छोड़ देंगे ।

  • यदि गंतव्य फ़ाइल B पहले से मौजूद है, तो डेल्टा ट्रांसफर एल्गोरिथ्म सुनिश्चित करेगा कि केवल A और B के बीच अंतर तार के ऊपर भेजा जाए।

  • rsyncएक अस्थायी फ़ाइल T के लिए डेटा लिखेंगे , और उसके बाद गंतव्य फ़ाइल B को T से बदलकर B को उपयोग करने वाली प्रक्रियाओं को "परमाणु" के रूप में अपडेट किया जाएगा ।

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

सारांश में, scpअपने दिन से दिन के कार्यों के लिए उपयोग करें। आपके इंटरेक्टिव शेल पर एक समय में एक बार टाइप करने वाले कमांड। यह उपयोग करने के लिए सरल है, और उन मामलों में rsyncअनुकूलन बहुत मदद नहीं करेगा।

आवर्ती कार्यों के लिए, जैसे cronनौकरी, उपयोग rsync। जैसा कि उल्लेख किया गया है, कई आक्रमणों पर यह पहले से ही स्थानांतरित किए गए डेटा का लाभ उठाएगा, बहुत तेज़ी से प्रदर्शन करेगा और संसाधनों पर बचत करेगा। यह एक नेटवर्क पर दो निर्देशिकाओं को सिंक्रनाइज़ रखने के लिए एक उत्कृष्ट उपकरण है।

इसके अलावा, बड़ी फ़ाइलों के साथ काम करते समय, विकल्प के rsyncसाथ उपयोग करें -P। यदि स्थानांतरण बाधित हो जाता है, तो आप इसे फिर से शुरू कर सकते हैं जहां यह कमांड को फिर से जारी करके बंद कर दिया गया है। सिड क्षत्रिय के देखें जवाब


14
आप अपने दिन के कार्यों के लिए scp का उपयोग करने के लिए कहते हैं। आपके स्पष्टीकरण और ओपी से, यह प्रतीत होता है कि दो उपकरणों के लिए इंटरफ़ेस जब बिना विकल्पों का उपयोग किया जाता है तो समान है। यदि rsync में बेहतर कार्यान्वयन है और इंटरफेस समान हैं, तो हमेशा rsync का उपयोग क्यों नहीं किया जाता है?
एलेक्स

5
उनका इंटरफ़ेस समान नहीं है, विकल्प के बिना भी। Rsync स्रोत तर्क पर एक अनुगामी स्लैश की विशेष व्याख्या करता है (निर्देशिका को अपनी सामग्री से ही सिंक्रनाइज़ करता है)। यह अन्य गोच हो सकता है, मुझे यकीन नहीं है।
रफा

2
इसके अलावा, मुझे लगता scpहै कि यूनिक्स जैसी प्रणाली पर उपलब्ध होने की अधिक संभावना है, इसलिए आप एक कष्टप्रद "कमांड नहीं मिला" को अब और फिर से रोकते हैं।
राफा

2
@ erikb85 rsync के पास -P ध्वज है जो एक प्रगति बार प्रदर्शित करेगा और आंशिक रूप से पूर्ण किए गए स्थानांतरण से फिर से शुरू हो सकेगा। digitalocean.com/community/tutorials/…
बेन

1
एक अन्य इंटरफ़ेस अंतर scpऔर rsync: rsync -aबनाम scp -rpसंशोधन समय और अनुमतियाँ संरक्षित करने के लिए।
राफा

71

rysnc धीमे और अविश्वसनीय कनेक्शन पर चलने के लिए उपयोगी हो सकता है। इसलिए यदि एक बड़ी फ़ाइल rysnc के बीच में आपका डाउनलोड निरस्त हो जाता है, तो उसे फिर से जारी रखने में सक्षम किया जा सकता है, जहाँ से इसे छोड़ा गया था।

उपयोग rsync -vP username@host:/path/to/file .

-पी विकल्प आंशिक रूप से डाउनलोड की गई फ़ाइलों को संरक्षित करता है और प्रगति भी दिखाता है।

हमेशा की तरह जाँच करें man rsync


32

भिन्न पैरामीटर पर अंतर b / w scp और rsync

1. विलंबता पर प्रदर्शन

  • scp : scp अपेक्षाकृत कम अनुकूलन और गति है

  • rsync : rsync तुलनात्मक रूप से अधिक अनुकूलन और गति है

https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/

2. व्यवधान से निपटने

  • scp : एससीपी कमांड लाइन टूल खोए हुए नेटवर्क कनेक्शन से निरस्त डाउनलोड को फिर से शुरू नहीं कर सकता है

  • rsync: यदि उपरोक्त rsync सत्र स्वयं बाधित हो जाता है, तो आप इसे उसी समय तक फिर से शुरू कर सकते हैं जब आप एक ही कमांड टाइप करके चाहते हैं। rsync स्वचालित रूप से उस स्थानान्तरण को पुनः आरंभ करेगा जहाँ उसने छोड़ा था।

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. कमांड उदाहरण

SCP

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

-Pविकल्प के रूप में एक ही है --partial --progress, आंशिक रूप से डाउनलोड फ़ाइलों के साथ काम करने के लिए rsync की इजाजत दी। --rsh=sshविकल्प एक दूरस्थ शेल के रूप में उपयोग करने के लिए ssh rsync बताता है।

4. सुरक्षा:

scp अधिक सुरक्षित है। आपको rsync --rsh=sshइसे scp के रूप में सुरक्षित बनाने के लिए उपयोग करना होगा।

अधिक जानने के लिए आदमी दस्तावेज़:

प्रदर्शन चार्ट


इस नए उत्तर के लिए धन्यवाद, विशेष रूप से सुरक्षा भाग के लिए।
जिहोंग

कई सिस्टम पर ssh डिफ़ॉल्ट रूप से उपयोग किया जाता है। serverfault.com/questions/378939/do-you-need-e-ssh-for-rsync
qwr

2
सुरक्षा के बारे में, The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
ओपनएसएसएच

6

rsyncओवर की एक प्रमुख विशेषता scp(डेल्टा एल्गोरिथ्म और एन्क्रिप्शन के साथ अगर w / ssh का उपयोग किया जाता है) यह है कि यह स्वचालित रूप से सत्यापित करता है कि हस्तांतरित फ़ाइल को सही तरीके से स्थानांतरित किया गया है या नहीं। एससीपी ऐसा नहीं करेगा, जिसके परिणामस्वरूप कभी-कभी बड़ी फ़ाइलों को स्थानांतरित करते समय भ्रष्टाचार हो सकता है। तो सामान्य rsync में गारंटी के साथ एक प्रति है

Centos manpages ने --checksumविकल्प विवरण के अंत का उल्लेख किया :

ध्यान दें कि rsync हमेशा इस बात की पुष्टि करता है कि प्रत्येक स्थानांतरित की गई फ़ाइल को पूरी तरह से उस फ़ाइल-चेकसम की जाँच करके, जो फ़ाइल के रूप में स्थानांतरित की गई है, उत्पन्न करके सही तरीके से फिर से बनाया गया था, लेकिन उस स्वचालित-बाद-हस्तांतरण सत्यापन का इस विकल्प से पहले कोई लेना-देना नहीं है- "इस फाइल को अपडेट करने की आवश्यकता है?" जाँच।


5

मेरे लिए एक अंतर है जो scpहमेशा ssh (सुरक्षित शेल) के साथ एन्क्रिप्टेड होता है, जबकि rsyncआवश्यक रूप से एन्क्रिप्ट नहीं किया गया है। विशेष रूप से, rsyncअपने आप से कोई एन्क्रिप्शन नहीं करता है; यह अभी भी एन्क्रिप्शन का प्रदर्शन करने के लिए अन्य तंत्रों (उदाहरण के लिए ssh) का उपयोग करने में सक्षम है।

सुरक्षा के अलावा, एन्क्रिप्शन का आपके स्थानांतरण की गति के साथ-साथ CPU ओवरहेड पर भी बड़ा प्रभाव पड़ता है। (मेरा अनुभव है कि इससे rsyncकाफी तेज हो सकता है scp।)

एन्क्रिप्शन कब है, इसके लिए इस पोस्टrsync को देखें।


1

scp एक फाइल के लिए सबसे अच्छा है ।
याtar छोटे संसाधनों के लिए छोटे डेटा सेट जैसे छोटे संसाधनों के लिए & कंप्रेशन का संयोजन ( जैसे : चित्र, साइक्लाइट आदि )।


फिर भी , जब आप बड़े संस्करणों के साथ काम शुरू करते हैं तो कहते हैं:

  • मीडिया फ़ोल्डर (40 GB)
  • डेटाबेस बैकअप (28 GB)
  • एमपी 3 लाइब्रेरी (100 जीबी)

होस्ट सर्वर की भौतिक सीमा तक इस बिंदु पर scp के साथ स्थानांतरण करने के लिए zip / tar.gz फ़ाइल का निर्माण करना अव्यावहारिक हो जाता है।

एक अभ्यास के रूप में, आप कुछ जिमनास्टिक कर सकते हैं जैसे कि पाइपिंग tarकरना sshऔर परिणामों को दूरस्थ फ़ाइल में पुनर्निर्देशित करना । (एक स्वैप या अस्थायी क्लोन उर्फ जिप या tar.gz बनाने की आवश्यकता को बचाते हुए )

हालाँकि ,

rsync इस प्रक्रिया को सरल बनाता है और आपको किसी भी अतिरिक्त डिस्क स्थान का उपभोग किए बिना डेटा स्थानांतरित करने की अनुमति देता है।

इसके अलावा ,

निरंतर (क्रोन?) अद्यतन समय के साथ बड़े डेटा माइग्रेशन की गति में पूर्ण क्लोन किए गए बनाम बनाम न्यूनतम परिवर्तनों का उपयोग करते हैं।

tl; dr
scp == छोटे पैमाने (एक ही ड्राइव पर संपीड़ित फ़ाइलों के निर्माण के लिए कमरा)
rsync== बड़े पैमाने पर (बैकअप बड़े डेटा की आवश्यकता के साथ और कोई कमरा नहीं बचा)


-1

व्यावहारिक संदर्भ में सोचना बेहतर है। हमारी टीम में, हम rsync -aPअपने क्लस्टर में एक खराब कैसेंड्रा होस्ट को बदलने के लिए उपयोग करते हैं । हम इसे scp (धीमी और कोई प्रगति संरक्षण) के साथ नहीं कर सकते।


वास्तव में अन्य उत्तरों में उल्लेखित कुछ भी नहीं लाना। साथ ही हमें ऑफ-टॉपिक प्रश्नों का उत्तर भी नहीं देना चाहिए।
डैन कॉर्निलेस्कु

1
@DanCornilescu यह एक वास्तविक परिदृश्य में उपयोग के मामले का वर्णन करता है, जो दूसरों के अंतर को समझना आसान बनाता है। मुझे कोई अन्य समान उत्तर नहीं दिखाई दे रहा है
डेल बोए

2
देखें। सिड और राफा के जवाबों में समझाया और सुस्ती / गति से संबंधित नोट्स।
डैन कॉर्निलेस्कु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.