Scp का उपयोग करके किसी सर्वर से फाइल कैसे खींचे?


31

मैं मशीन A पर हूं और मशीन B से फाइल खींचना चाहता हूं।

A$ scp <myuserid>@hostB:<path of file in B> .

इससे लगता है:

scp: <path of file in B>: No such file or directory

लेकिन मशीन बी पर, यह फ़ाइल इस पथ में मौजूद है।

क्या गलत हो रहा है?


क्या यह आपके द्वारा चलाए गए कमांड का सटीक प्रारूप है? या ':' के बाद कोई फ़ाइल नाम था?
डेंटलर

जवाबों:


43

आपने कोई फ़ाइल निर्दिष्ट नहीं की: आपको कोलन के बाद फ़ाइल (पथ के साथ) जोड़ना है:

A$ scp <myuserid>@hostB:/absolutepath/file .

या

A$ scp <myuserid>@hostB:relativepath/file .

अपने घर निर्देशिका के सापेक्ष पथ के लिए।

यदि आप एक अलग उपयोगकर्ता निर्दिष्ट नहीं करते हैं (यानी, A और B का उपयोगकर्ता समान हैं) तो आपको इसकी आवश्यकता नहीं है @

A$ scp hostB:/path/file .

2
मैंने प्रश्न में प्रारूपण तय किया, लेकिन शायद आपका उत्तर अभी भी मान्य है। समस्या पूर्ण और सापेक्ष (घर) पथ के बीच एक भ्रम से आ सकती है।
स्टेफेन जिमेनेज

@ StéphaneGimenez अब मैं संपादित किए गए उत्तर को देख रहा हूँ जो मुझे समझ में आ रहे हैं। यह एक अजीब सवाल लग रहा था :-)
मैटो

4
$ scp username@remoteip:remote_location_file /location/where/you/save

यह केवल तभी काम करता है जब आप फ़ाइल की प्रतिलिपि बनाते हैं। यदि आप एक निर्देशिका उपयोग की प्रतिलिपि बनाना चाहते हैं

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

विकल्प आप अपनी मांग पर उपयोग कर सकते हैं

-पोर्ट
रिमोट होस्ट पर कनेक्ट करने के लिए पोर्ट को निर्दिष्ट करता है। ध्यान दें कि यह विकल्प एक राजधानी "पी" के साथ लिखा गया है, क्योंकि -p पहले से ही आरसीपी में फ़ाइल के समय और मोड को संरक्षित करने के लिए आरक्षित है।

-p
मूल फ़ाइल से संशोधन समय, पहुंच समय और मोड को संरक्षित करता है।

-r
पुनरावर्ती पूरी निर्देशिका की प्रतिलिपि बनाएँ।

-v

वाचाल प्रकार। उनकी प्रगति के बारे में डीबगिंग संदेश मुद्रित करने के लिए scp और ssh का कारण बनता है। यह कनेक्शन, प्रमाणीकरण और कॉन्फ़िगरेशन समस्याओं को डीबग करने में सहायक है।


1
ओपी ने एक फाइल को कॉपी करने के लिए कहा, न कि डायरेक्टरी के लिए।
काउंटर

2

उचित scp पथ का उपयोग करें

scp ssh://user@hostname/tmp/foo.txt .

1

आप या तो एक फ़ाइल पथ निर्दिष्ट कर सकते हैं जो आपके घर निर्देशिका के सापेक्ष है, या एक पूर्ण फ़ाइल पथ है। उदाहरण के लिए, अगर foo.txtनाम वाली निर्देशिका में है docsअपने घर निर्देशिका के अंतर्गत और bar.txtमें है /var/tmp, तो आप क्या कर सकते हैं

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

ध्यान दें कि यदि फ़ाइल नाम में ऐसे वर्ण हैं जो दूरस्थ शेल (आमतौर पर व्हाट्सएप या !"#$&'*;<>?[\]^`{|}~) के लिए विशेष हैं , तो आपको स्थानीय शेल के लिए भागने के अलावा उन्हें दूरस्थ शेल से बचने की आवश्यकता है। उदाहरण के लिए, यदि फ़ाइल को कॉल किया जाता है foo bar.txtऔर आपके होम डायरेक्टरी में है:

scp username@host.example.com:'foo\ bar.txt' .

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

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

यदि आप DMZ उपयोगकर्ता और पासवर्ड आपके स्थानीय मशीन पर हैं, तो कोई भी SCP दोनों को आसानी से ले सकता है: DMZ से आपके स्थानीय लिनक्स मशीन (पुल) तक। मतलब फ़ोल्डर की प्रतिलिपि abc.text को फ़ोल्डर 2 के अंदर अपने वर्तमान लॉग-इन पीडब्ल्यूडी में।

scp user@111111:folder1/folder2/abc.txt .

यह पासवर्ड मांगेगा

बस इतना ही

अब आप अपने स्थानीय मशीन से DMF के लिए एक फ़ोल्डर सबफ़ोल्डर्स और फ़ाइलों को भेजना चाहते हैं:

usr @ localmachine: ~ / abc / defs> scp -r folder / usr @ 111111: vkrishna / docker /

फिर से पासवर्ड पूछा जाएगा

: रिमोट मशीन का रूट फ़ोल्डर है और vkrishna वहाँ एक फ़ोल्डर है और फिर से docker सबफ़ोल्डर है। स्थानीय रूप से डील्स फ़ोल्डर में एक फ़ोल्डर होता है जिसे "फ़ोल्डर" कहा जाता है जिसे हम पूरी तरह से स्थानांतरित करना चाहते हैं।

जैसे / abc / defs / folder

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