मैं scp का उपयोग करके दूरस्थ से स्थानीय तक एक फ़ोल्डर की प्रतिलिपि कैसे बना सकता हूं? [बन्द है]


2693

मैं दूरस्थ से स्थानीय होस्ट का उपयोग करके किसी फ़ोल्डर की प्रतिलिपि कैसे बना सकता हूं scp?

मैं sshअपने सर्वर में लॉग इन करने के लिए उपयोग करता हूं।
फिर, मैं दूरस्थ फ़ोल्डर fooको स्थानीय में कॉपी करना चाहूंगा /home/user/Desktop

मुझे यह कैसे हासिल होगा?


61
ओपी का सवाल था कि क्या रिमोट से लोकल होस्ट के लिए फाइल को कॉपी करना संभव है, जबकि रिमोट होस्ट को ssh'd । मुझे यकीन नहीं है कि किसी एक उत्तर ने अपने प्रश्न को सही ढंग से संबोधित नहीं किया है।
जेफड्राल

3
प्रश्न का आधार गलत है। यह विचार है कि एक बार ssh में लॉग इन होने के बाद, लॉग-इन मशीन से फाइल को उस क्लाइंट में कैसे स्थानांतरित किया जाए, जो लॉग इन है। हालाँकि, scp के बारे में पता नहीं है और न ही यह ssh कनेक्शन का उपयोग कर सकता है। यह अपना कनेक्शन बना रहा है। तो सरल समाधान स्थानीय वर्कस्टेशन पर एक नई टर्मिनल विंडो बना रहा है, और रनवे जो दूरस्थ सर्वर से स्थानीय मशीन में फ़ाइलों को स्थानांतरित करता है। जैसे, scp -i प्रमुख उपयोगकर्ता @ रिमोट: / रिमोट-डीआईआर / रिमोट-फाइल / लोकल-डायर / लोकल-फाइल
jeffmcneill

12
सवाल ऑफ-टॉपिक हो सकता है, लेकिन यह Google पर सर्वोच्च रैंक वाला पोस्ट भी है। इसे लॉक करने का मतलब है कि बेहतर समाधान प्रदान करने के लिए कोई भी इसे अपडेट नहीं कर सकता है।
एलेक्स हार्वे

3
मैंने हाल ही में सुपरयूज़र पर एक अन्य टूल के लिए कमांड लाइनों के संबंध में एक समान "बिट डीप" प्रश्न पूछा था, और इसे स्टैकऑवरफ्लो के लिए मॉड द्वारा ले जाया गया था। वैसे भी मैं मॉड्स के विवाद से सहमत हूं: क्या हम इसे सुपरयूजर के पास ले जा सकते हैं और कृपया इसे अनलॉक किया है और इसमें अधिक जवाब दिए हैं?
निखिल वीजे

3
सामान्य तौर पर, स्टैकओवरफ्लो पर संपूर्ण "ऑफ-टॉपिक" प्रतिक्रिया मंच का सबसे बड़ा दोष है। अत्यधिक खतरनाक मार्टिनेट।
एडम जूल

जवाबों:


4934
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

फू के अंत में अनुगामी '/' को शामिल न करके, आप केवल निर्देशिका की सामग्री के बजाय निर्देशिका (सामग्री सहित) को स्थानांतरित करेंगे।

से man scp( ऑनलाइन मैनुअल देखें )

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


1408
मैं हर बार यह गूगल करता हूं। संबंधित हास्य: xkcd.com/1168
cptloop

10
दो अच्छा करने के लिए जानता है मैंने पाया: -Cझंडा संपीड़न कहते हैं और -cझंडा आप की तरह बेहतर प्रदर्शन के लिए अन्य सिफर प्रकार में पारित, की सुविधा देता है scp -c blowfish a@b:something . के रूप में dimuthu के जवाब में देखा
Automatico

79
उपयोग -p फ़ाइल संशोधन समय, अनुमतियाँ, आदि को संरक्षित करने के लिए! scp -pr user @ ...
Ber

27
इस उत्तर में महत्वपूर्ण व्याख्या का अभाव है। क्या आप के साथ खत्म हो Desktop/fooजाएगा या क्या आपके पास Desktop/allcontentsofFooGoherescp होगा अजीब लगता है कभी-कभी मेरे लिए यह एक काम करता है तो दूसरा
Toskan

7
@Toskan आपके साथ scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/समाप्त होना चाहिए Desktop/foo। साथ scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/ आप की सामग्री के साथ खत्म हो जाएगा fooमें Desktopऔर के सभी उप dirs fooतहत बिखरेDesktop
Ioannis

306

Scp की पूरी शक्ति का उपयोग करने के लिए आपको अगले चरणों से गुजरना होगा:

  1. सार्वजनिक कुंजी प्राधिकरण
  2. Ssh उपनाम बनाएँ

फिर, उदाहरण के लिए यदि आपके पास यह ~ /। Ssh / config है :

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

आप पासवर्ड प्रविष्टि से खुद को बचाएंगे और इस तरह से एसपीपी सिंटैक्स को सरल बनाएंगे :

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

अधिक से अधिक, आप दूरस्थ पथ पूर्णता का उपयोग करने में सक्षम होंगे:

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

अपडेट करें:

दूरस्थ बैश-समापन को सक्षम करने के लिए आपको मेजबान <source>और दोनों पर बैश-शेल की आवश्यकता होती है <target>, और ठीक से काम करने के लिए बैश-पूरा करना होता है। अधिक जानकारी के लिए संबंधित प्रश्न देखें:

Scp का उपयोग करते समय दूरस्थ रास्तों के लिए स्वतः पूर्णता कैसे सक्षम करें?
एससीपी फ़ाइल नाम टैब पूर्णता


12
Config फ़ाइल के बारे में नहीं पता था, यह बहुत बढ़िया है!
डेमस्टलो

टैब पूरा होना बकवास है, बस मेरे लिए स्थानीय होस्ट से पूरा होता है।
बर्नहार्ड

14
@ b.long सवाल यह है कि "स्थानीय डेस्कटॉप पर रिमोट फ़ोल्डर फू को कॉपी कैसे करें"। मेरा उत्तर है "scp -r prod: / path / foo / home / user / Desktop" । आशा है कि आप संबंध देख पाएंगे।
अलेक्जेंडर यानचेर

2
@ बर्नहार्ड मेरे लिए स्पष्ट था क्योंकि मैं बैश-शेल का उपयोग कर रहा हूं। उस पर मुझे इशारा करने के लिए धन्यवाद! उत्तर अपडेट किया गया।
अलेक्जेंडर यानचुक

1
@ अलेक्सेंडर यानचुक: उत्तर के लिए धन्यवाद, यह केवल सिंटैक्स को कवर करने की तुलना में अधिक विस्तृत है।
ग्लेडिएटर

216

सभी स्थानीय स्थान से दूरस्थ स्थान पर अपलोड करने के लिए (अपलोड करें)

scp -r /path/from/destination username@hostname:/path/to/destination

दूरस्थ स्थान से स्थानीय स्थान पर सभी की प्रतिलिपि बनाने के लिए (डाउनलोड करें)

scp -r username@hostname:/path/from/destination /path/to/destination

कस्टम पोर्ट जहां xxxxहै कस्टम पोर्ट नंबर

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

दूरस्थ से स्थानीय तक वर्तमान निर्देशिका पर कॉपी करें

scp -r username@hostname:/path/from/file .

मदद:

  1. -r पुन: सभी निर्देशिकाओं और फ़ाइलों की प्रतिलिपि बनाएँ
  2. हमेशा से पूर्ण स्थान का उपयोग /करें, द्वारा पूर्ण स्थान प्राप्त करेंpwd
  3. scp सभी मौजूदा फ़ाइलों को बदल देगा
  4. hostname होस्टनाम या आईपी एड्रेस होगा
  5. यदि कस्टम पोर्ट की आवश्यकता है (पोर्ट 22 के अलावा) का उपयोग करें -P portnumber
  6. । (डॉट) - इसका मतलब है कि वर्तमान कार्यशील निर्देशिका, इसलिए सर्वर से डाउनलोड / कॉपी करें और केवल यहां पेस्ट करें।

नोट: कभी-कभी फ़ायरवॉल में पोर्ट की अनुमति नहीं होने के कारण कस्टम पोर्ट काम नहीं करेगा, इसलिए सुनिश्चित करें कि आने और जाने वाले कनेक्शन के लिए फ़ायरवॉल में कस्टम पोर्ट की अनुमति है


1
ऐसा लगता है (कम से कम रस्पियन जेसी और उबंटू के हाल के संस्करणों में) जो एसटीपी पोर्ट के लिए -P (अपरकेस पी) का उपयोग करता है, जबकि (विषम) एसएच उपयोग -p (लोअरकेस)।
एडम प्लोचर

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

Ssh के साथ, हाँ। एससीपी के साथ नहीं (मुझे लगता है)।
एडम प्लोचर

यदि निर्देशिका में कोई स्थान है तो मुझे क्या करना चाहिए?
ब्रेथलॉज़

@hyprfrcb pwdस्थान पाने के लिए उपयोग करें और उसी का उपयोग करें
शिव सिंह

48

मैं हमेशा क्या उपयोग करता हूं:

scp -r username@IP:/path/to/server/source/folder/  .

। (डॉट) : इसका मतलब है current folder। इसलिए सर्वर से कॉपी करें और केवल यहां पेस्ट करें।

आईपी : एक आईपी एड्रेस 125.55.41.311हो सकता है जैसे या इसे होस्ट किया जा सकता है ns1.mysite.com


9
.वर्तमान निर्देशिका को संदर्भित करने के लिए धन्यवाद !
इरिक्मजल

35

दूरस्थ सर्वर पर पहले कम्प्रेस कैटलॉग के लिए बेहतर:

tar czfP backup.tar.gz /path/to/catalog

दूसरे, रिमोट से डाउनलोड करें:

scp user@your.server.example.com:/path/to/backup.tar.gz .

अंत में, फ़ाइलें निकालें:

tar -xzvf backup.tar.gz

10
"बेहतर" अत्यधिक उस डेटा पर निर्भर करता है जिसे आप स्थानांतरित कर रहे हैं और यह प्रयास है कि सर्वर पर ssh को zipping / unzipping करना है। और: आप -Cध्वज के साथ एससीपी में संपीड़न जोड़ सकते हैं , जैसे scp -C a@b:bigfile .
Automatico

4
यह @cptloop द्वारा की गई टिप्पणी की याद दिलाता है! : D xkcd.com/1168
GoodSp33d

22

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

यह फ़ाइल प्रतिलिपि समय को बहुत कम कर देगा।

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

2
इस ब्लॉग पोस्ट के अनुसार आपको लगातार बेहतर प्रदर्शन मिलता arcfourहै blowfish, लेकिन इसमें सुरक्षा खामियां हैं।
Automatico

20

विशिष्ट परिदृश्य,

scp -r -P port username@ip:/path-to-folder  .

एक नमूने के साथ समझाया,

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

कहाँ पे,

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

उत्तर के लिए आपका धन्यवाद। -एक विशिष्ट SSH पोर्ट के लिए मेरे लिए उपयोगी था।
Redoff

19

अपने एकता उपकरण पट्टी पर फ़ाइलें पर जाएँ

यहां छवि विवरण दर्ज करें

Ctrl + l दबाएं और यहां_जोड़ें_your_user_name@192.168.10.123 लिखें

192.168.1.103 वह होस्ट है जिसे आप कनेक्ट करना चाहते हैं।

यहाँ एक उदाहरण है

यहां छवि विवरण दर्ज करें


12

सवाल यह था कि scpकमांड से रिमोट से फोल्डर को कैसे कॉपी किया जाए ।

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

लेकिन यहाँ इसके साथ करने का बेहतर तरीका है sftp- SSH फ़ाइल स्थानांतरण प्रोटोकॉल (सुरक्षित फ़ाइल स्थानांतरण प्रोटोकॉल या SFTP) एक नेटवर्क प्रोटोकॉल है जो किसी भी विश्वसनीय डेटा स्ट्रीम पर फ़ाइल एक्सेस, फ़ाइल स्थानांतरण और फ़ाइल प्रबंधन प्रदान करता है। (विकिपीडिया)।

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

sftpकमांड के बारे में मदद के लिए बस टाइप करें helpया ?


12

यदि आप "बहुत अधिक प्रमाणीकरण विफलताओं" में भाग लेते हैं , तो उस सटीक SSH कुंजी को निर्दिष्ट करें जिसे आपने अपने severs ssh सर्वर में जोड़ा है:

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

5

मुझे पता नहीं क्यों लेकिन मुझे स्रोत सर्वर निर्देश से पहले स्थानीय फ़ोल्डर का उपयोग करना था। यह काम करने के लिए

scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/

1
मान लें कि उपयोगकर्ता के पास अनुमतियाँ थीं, क्या आप उपयोग किए बिना एक निरपेक्ष पथ कर सकते थेroot@
जोनाथन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.