`-सी` ध्वज वास्तव में` एससीपी` में क्या करता है?


35

मैं हमेशा rsyncया तो या scpरिमोट मशीन से फाइल कॉपी करने के लिए उपयोग करता हूं । हाल ही में, मैंने ध्वज scp( man scp) के मैनुअल में खोजा-C

 -C      Compression enable.  Passes the -C flag to
         ssh(1) to enable compression.

इससे पहले कि मैं इस झंडे की खोज करता, मैं zipपहले और बाद में इस्तेमाल करता था scp

यह सिर्फ -Czipping और unzipping की तुलना में उपयोग करने के लिए के रूप में कुशल है ? एक या अन्य प्रक्रिया का उपयोग करते समय स्थानांतरण तेज हो जाता है?


2
मुझे लगता है कि सबसे अच्छा तरीका है अपने आप से बेंचमार्क। का उपयोग करना scp -rvऔर scp -Crvथ्रूपुट की तुलना करना।
congonglm

3
यह सवाल पूरी तरह से अप्रासंगिक है, लेकिन zipएक बहुत ही "विंडोज़" -ish फ़ाइल प्रारूप है। देशी लिनक्स सॉफ्टवेयर के साथ एक लाइनक्स मशीन को संचालित करते समय आपको लगभग कभी भी इसकी आवश्यकता नहीं होगी या इसकी आवश्यकता नहीं होगी। tar, एक फाइल में निर्देशिका अप रोलिंग अनुमतियों और नाम और इस तरह के संरक्षण थोड़ी देर के लिए प्रयोग किया जाता है, जबकि gzip, bzip2, xz, आदि संपीड़ित फ़ाइलों के लिए उपयोग किया जाता है। tarअक्सर लिनक्स पर अभिलेखागार के लिए संकुचित, बनाना tar.gzऔर tar.xzसामान्य प्रारूप होते हैं। मैंने देखा है कि लोग अपने स्वयं के scpवर्कलाइक को जैसे कमांड के साथ रोल करते हैं tar cvz directory | ssh machine 'cd somewhere; tar xz'
स्कोर_उंडर

2
@Score_Under - ज़िप प्रारूप का उपयोग जावा द्वारा पैकेज .jar फ़ाइलों के लिए भी किया जाता है, इसलिए अभी भी कई लिनक्स सर्वरों पर ज़िप का बड़े पैमाने पर उपयोग किया जाता है।
जॉनी

प्रत्येक फ़ाइल स्थानांतरण पर विकल्प का उपयोग करने के बजाय, आप Compression yesअपनी .ssh/configफ़ाइल में रख सकते हैं ।
बरमार

यदि आप वास्तव में गति चाहते हैं, तो आप SSH से बचने में सक्षम हो सकते हैं: unix.stackexchange.com/questions/227951/…
rogerdpack

जवाबों:


22

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

gzipदूसरी ओर का उपयोग करने के बजाय, zipठीक वैसा ही होना चाहिए क्योंकि यह ssh -Cहुड के नीचे होता है ... सिवाय इसके कि खुद को सिर्फ इस्तेमाल करने से ज्यादा काम करना है ssh -C


ठीक है, मैं जांच करूंगा कि क्या gzipहै। क्या आपके जवाब का मतलब है कि scp -rCशायद मेरे पास सबसे कुशल समाधान है?
रेमी .b

1
आपका उत्तर यह नहीं मानता है कि -Cएक इंटरैक्टिव प्रोटोकॉल स्ट्रीम को संकुचित करता है। आप आंकड़ों पर ही विचार करें। इसलिए आपके निष्कर्ष गलत हैं। मेरा जवाब
मार्टिन प्रिक्रील

@Celada ज़िप एक पाइपलाइन को लिख सकता है क्योंकि सदस्य निर्देशिका को अंत में रखा गया है। हालाँकि, जैसा कि आपने कहा, अनज़िपिंग के लिए एक से अधिक सदस्य निकालने की आवश्यकता होती है और इसलिए पाइपलाइन से नहीं पढ़ा जा सकता है।
jrw32982

20

-Cझंडा एक SSH धारा की एक gzip संपीड़न सक्षम बनाता है।

यह Accept-Encoding: gzipHTTP में एक समकक्ष है ।

ध्वज आपके द्वारा स्थानांतरित किए जाने वाले डेटा पर निर्भर करता है:

  • एकल बड़ी फ़ाइल को स्थानांतरित करते समय, स्थानांतरण से पहले फ़ाइल को ज़िप करने के लिए प्रदर्शन उसी के पास होगा (ज़िप बनाम गज़िप एल्गोरिथम की दक्षता की उपेक्षा)।

    लेकिन -Cएक उपयोगकर्ता के रूप में आपके लिए उपयोग करना कम प्रयास है।

  • बहुत सी छोटी फ़ाइलों को स्थानांतरित करते समय, स्थानांतरण से पहले फ़ाइलों को ज़िप करने के लिए प्रदर्शन अवर होगा।

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

    जब आप किसी एकल ज़िपित फ़ाइल को स्थानांतरित करते हैं, तो वह संचार केवल एक बार होता है।


8

यह sz (scp के तहत) में गज़िप कंप्रेशन को सक्षम करता है।

पर धीमी गति से कनेक्शन इस बातें तेज़ हो जाएगी, (100Mbit या तेज) किसी भी यथोचित तेजी से कनेक्शन पर संपीड़न नीचे धीमी गति से बातें करने के लिए बहुत संभावना है।

यह जिप की तुलना में अधिक या कम कुशल होगा कि क्या gzip (विशेष रूप से gzip -6) आपके चुने हुए ज़िप संपीड़न स्तर की तुलना में अधिक या कम कुशल होगा


1
मेरे विशिष्ट मामले में, मेरा अपेक्षाकृत अच्छा संबंध है (मैं कैंपस में हूं) लेकिन मेरे द्वारा कॉपी किए जाने वाले फोल्डर बहुत बड़े हैं (~ 100 जीबी 442 .binऔर .txtफाइलों से अधिक)। तो आप सुझाव देंगे कि आप सिर्फ इस्तेमाल करें scp -rऔर कोई -Cझंडा नहीं और नहीं zip, gzipनहीं tar?
रेमी। बी।

2
@ रेमी.बी: आपको शायद इसे दोनों तरीकों से बेंचमार्क करना होगा और देखना होगा। सवाल यह है कि क्या सीपीयू तेजी से डेटा को तेज दर पर संपीड़ित करने के लिए पर्याप्त है, क्योंकि यह नेटवर्क पर असम्पीडित पर भेजा जा सकता है। तो उत्तर आपके विशेष मशीन और नेटवर्क पर निर्भर करेगा।
नैट एल्ड्रेडज

ठीक है मुझे बिंदु +1 मिला। आपकी मदद के लिए धन्यवाद
Remi.b

SSH खुद को कुछ CPU I नोटिस लगता है, कभी-कभी आपके बैंडविड्थ अधिकतम से काफी नीचे। नहीं यकीन है कि वहाँ क्या करना है ...
rogerdpack

प्रदर्शन डेटा पर भी निर्भर करता है। एक फ़ाइल को कॉपी करना जो अनिवार्य रूप से सभी शून्य है अत्यधिक संपीड़ित होगी। मेरे पास दो दूरस्थ सर्वरों के बीच 500Mb लिंक है, और केवल 507 फाइल (VMWare VMDK) को कॉपी किया है, जिसमें इस लिंक पर सभी शून्य ~ 128-130MB / s (संभवतः कुछ एससीपी संपीड़न बफर सीमा) हैं, केवल 6-7 मिनट लगते हैं। बिना कंप्रेशन के यह 1:45 बजे ले जाने वाला था। डेटा की जटिलता और यह कितनी अच्छी तरह से संपीड़ित हो सकता है, इसके आधार पर आपका माइलेज अलग-अलग होगा।
Topher
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.