2008-12-05 16 views
355

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

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/ 
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file] 
      [-l limit] [-o ssh_option] [-P port] [-S program] 
      [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2 
[Stewart:console/ebooks/discostat] jmm% 

मैं दोनों दिशाओं में फ़ाइलों को हस्तांतरण करने में सक्षम होना चाहते हैं: हालांकि, दूरस्थ सर्वर इस "उपयोग" संदेश देता है। मैंने जो पढ़ा, उससे मैंने सोचा कि उपरोक्त आदेश डाउनलोड करने के लिए काम करेगा, और scp -p [localpath] [remotepath] अपलोड करने के लिए?

उत्तर

12

नहीं है, तो आप अभी भी जो भी जिस तरह से आप

अंतर नहीं है कॉपी कर रहे scp [from] [to] करने की जरूरत है, तो आप scp -p server:serverpath localpath

+5

-p के उद्देश्य क्या है? – Qinjie

562

आप कहीं scp कुछ करने की जरूरत है की जरूरत है। आपके पास scp ./styles/ है, इसलिए आप सुरक्षित प्रतिलिपि ./styles/ कह रहे हैं, लेकिन इसे कॉपी करने के लिए कहां नहीं है।

आम तौर पर, आप डाउनलोड करना चाहते हैं, तो यह जाना होगा:।

:

# download: remote -> local 
scp [email protected]_host:remote_file local_file 

जहां local_file वास्तव में फ़ाइल आप में कॉपी कर रहे हैं डाल करने के लिए एक निर्देशिका हो सकता है अपलोड करने के लिए, यह विपरीत है

# upload: local -> remote 
scp local_file [email protected]_host:remote_file 

यदि आप एक संपूर्ण निर्देशिका की प्रतिलिपि बनाना चाहते हैं, तो आपको -r की आवश्यकता होगी। scp जैसे cp के बारे में सोचें, सिवाय इसके कि आप [email protected]_host:file के साथ-साथ केवल स्थानीय फ़ाइलों के साथ एक फ़ाइल निर्दिष्ट कर सकते हैं।

संपादित करें: जैसा कि एक टिप्पणी में उल्लेख किया गया है, यदि स्थानीय और दूरस्थ होस्ट पर उपयोगकर्ता नाम समान हैं, तो दूरस्थ फ़ाइल निर्दिष्ट करते समय उपयोगकर्ता को छोड़ा जा सकता है।

+2

ध्यान दें कि यदि उपयोगकर्ता दूरस्थ होस्ट और स्थानीय होस्ट पर समान है, तो उपयोगकर्ता नाम छोड़ा जा सकता है: scp hello.c myserver.net:~/projects/ – strager

+0

हाँ, सच है, मैं इसके बारे में एक नोट जोड़ूंगा। मैंने उपयोगकर्ता को शामिल किया क्योंकि तब दिए गए उदाहरण हमेशा काम करेंगे। :) – lemnisca

+1

+1: इसे थोड़ा स्पष्ट बनाने के लिए स्वरूपण जोड़ा गया। –

122

यदि आपकी डेस्कटॉप मशीन से/से कॉपी करने के लिए, WinSCP का उपयोग करें, या यदि लिनक्स पर, नॉटिलस कनेक्ट टू सर्वर विकल्प के माध्यम से एससीपी का समर्थन करता है।

एसपीपी केवल एसएसडी चलाने वाली मशीन पर फ़ाइलों की प्रतिलिपि बना सकता है, इसलिए आपको उस क्लाइंट सॉफ़्टवेयर को दूरस्थ मशीन पर चलाने की आवश्यकता है जिसे आप स्कैन कर रहे हैं।

तो कमांड लाइन पर प्रतिलिपि, का उपयोग करें:

# copy from local machine to remote machine 
scp localfile [email protected]:/path/to/whereyouwant/thefile 

या

# copy from remote machine to local machine 
scp [email protected]:/path/to/remotefile localfile 
+2

आप आदमी हैं। मैंने सर्वर पक्ष पर किसी भी अतिरिक्त स्थापना के बिना 10 सेकंड से कम समय में एक ब्लॉग तैनात किया! –

+0

यह पूरी तरह से काम किया। मैंने cmd में msysgit का उपयोग किया क्योंकि इसमें दोनों scp और ssh है। –

+1

यह पूरी तरह से काम किया। मैंने scp * user @ host का उपयोग किया:/path/to/where –

21

आप दोनों स्रोत और गंतव्य निर्दिष्ट करने की आवश्यकता है, और आप निर्देशिका प्रतिलिपि बनाना चाहते हैं, तो आप पर गौर करना चाहिए - आर विकल्प।

तो रिकर्सिवली जो कुछ दूरस्थ सर्वर से अपने वर्तमान निर्देशिका को कॉपी करने के लिए/घर/उपयोगकर्ता /:

scp -pr [email protected]:whatever .