नॉलेजबेस · Linux
SCP ट्यूटोरियल
अंतिम अपडेट 2020-04-05
यदि आप UNIX परिवेश में हैं और फ़ाइलें कॉपी करने का एक तेज़ और सुरक्षित तरीका चाहते हैं, तो मेरा सुझाव है कि कमांड-लाइन से scp का उपयोग करें। SSH और OpenSSH scp एप्लिकेशन प्रदान करते हैं, जिससे आप एन्क्रिप्टेड FTP सेवा (ssh daemon) चलाने वाले सर्वर से कनेक्ट होकर फ़ाइलें ट्रांसफ़र कर सकते हैं। यदि आप X windows GUI एप्लिकेशन खोज रहे हैं, तो आप यह आज़मा सकते हैं http://gftp.seul.org/.
scp इस प्रकार काम करता है:
(कृपया बिंदुओं (periods) के उपयोग पर ध्यान दें; ये अत्यंत आवश्यक हैं!!)
1) hostB से hostA में कोई फ़ाइल कॉपी करने के लिए, hostB में लॉग इन रहते हुए:
[user@server ~]$ scp -P port filename username@hostA.com:.
(कोलन के बाद पीरियड होने के कारण फ़ाइल hostA मशीन पर यूज़र की होम डायरेक्टरी में कॉपी हो जाती है)
2) hostB से hostA पर कोई फ़ोल्डर कॉपी करने के लिए, hostB में लॉग इन रहते हुए पहले HostB पर उस डायरेक्टरी में cd करें जिसमें वह फ़ोल्डर मौजूद है जिसे आप कॉपी करना चाहते हैं:
[user@server ~]$ scp -r -P port folder username@hostA.com:.
(यदि फ़ोल्डर मौजूद नहीं है तो नया फ़ोल्डर बन जाता है, यह भी यूज़र की होम डायरेक्टरी में ही बनता है)
3) hostB में लॉग इन रहते हुए hostA से hostB पर कोई फ़ाइल कॉपी करने के लिए:
[user@server ~]$ scp -P port username@hostA.com:filename .
(hostB की मौजूदा डायरेक्टरी में कॉपी हो जाती है)
[user@server ~]$ scp -r -P port username@hostA.com:folder .
(पूरा फ़ोल्डर hostB की मौजूदा डायरेक्टरी में कॉपी हो जाता है)
4) hostB में लॉग इन रहते हुए hostA से hostB पर किसी फ़ोल्डर के भीतर मौजूद फ़ाइल या फ़ोल्डर कॉपी करने के लिए:
[user@server ~]$ scp -P port username@hostA.com:/folder/dir/filename .
(hostB की मौजूदा डायरेक्टरी में कॉपी हो जाती है)
[user@server ~]$ scp -r -P port username@hostA.com:/folder/dir .
(पूरा फ़ोल्डर hostB की मौजूदा डायरेक्टरी में कॉपी हो जाता है)
5) फ़ाइलों को होम डायरेक्टरी या मौजूदा वर्किंग डायरेक्टरी में कॉपी करने के लिए '.' का उपयोग करने के बजाय आप scp को कोई वास्तविक पाथ दे सकते हैं (बशर्ते आपके पास राइट परमिशन हो):
[user@server ~]$ scp -r -P port folder username@hostA:/home/httpd/
[user@server ~]$ scp -P port username@hostA.com:/folder/dir/filename /home/tmp/
क्या आपका होस्ट ssh पर रिसोर्स कंट्रोल लागू करता है?
ऊपर दिए गए किसी भी या सभी कमांड के आगे इस तरह का प्रीफ़िक्स लगाकर उन्हें nice करें
[user@server ~]$ nice -n +19
आप संख्या 19 को अपने होस्ट की रिसोर्स सीमा से कम किसी भी मान में बदल सकते हैं।
scp इस प्रकार काम करता है:
(कृपया बिंदुओं (periods) के उपयोग पर ध्यान दें; ये अत्यंत आवश्यक हैं!!)
1) hostB से hostA में कोई फ़ाइल कॉपी करने के लिए, hostB में लॉग इन रहते हुए:
[user@server ~]$ scp -P port filename username@hostA.com:.
(कोलन के बाद पीरियड होने के कारण फ़ाइल hostA मशीन पर यूज़र की होम डायरेक्टरी में कॉपी हो जाती है)
2) hostB से hostA पर कोई फ़ोल्डर कॉपी करने के लिए, hostB में लॉग इन रहते हुए पहले HostB पर उस डायरेक्टरी में cd करें जिसमें वह फ़ोल्डर मौजूद है जिसे आप कॉपी करना चाहते हैं:
[user@server ~]$ scp -r -P port folder username@hostA.com:.
(यदि फ़ोल्डर मौजूद नहीं है तो नया फ़ोल्डर बन जाता है, यह भी यूज़र की होम डायरेक्टरी में ही बनता है)
3) hostB में लॉग इन रहते हुए hostA से hostB पर कोई फ़ाइल कॉपी करने के लिए:
[user@server ~]$ scp -P port username@hostA.com:filename .
(hostB की मौजूदा डायरेक्टरी में कॉपी हो जाती है)
[user@server ~]$ scp -r -P port username@hostA.com:folder .
(पूरा फ़ोल्डर hostB की मौजूदा डायरेक्टरी में कॉपी हो जाता है)
4) hostB में लॉग इन रहते हुए hostA से hostB पर किसी फ़ोल्डर के भीतर मौजूद फ़ाइल या फ़ोल्डर कॉपी करने के लिए:
[user@server ~]$ scp -P port username@hostA.com:/folder/dir/filename .
(hostB की मौजूदा डायरेक्टरी में कॉपी हो जाती है)
[user@server ~]$ scp -r -P port username@hostA.com:/folder/dir .
(पूरा फ़ोल्डर hostB की मौजूदा डायरेक्टरी में कॉपी हो जाता है)
5) फ़ाइलों को होम डायरेक्टरी या मौजूदा वर्किंग डायरेक्टरी में कॉपी करने के लिए '.' का उपयोग करने के बजाय आप scp को कोई वास्तविक पाथ दे सकते हैं (बशर्ते आपके पास राइट परमिशन हो):
[user@server ~]$ scp -r -P port folder username@hostA:/home/httpd/
[user@server ~]$ scp -P port username@hostA.com:/folder/dir/filename /home/tmp/
क्या आपका होस्ट ssh पर रिसोर्स कंट्रोल लागू करता है?
ऊपर दिए गए किसी भी या सभी कमांड के आगे इस तरह का प्रीफ़िक्स लगाकर उन्हें nice करें
[user@server ~]$ nice -n +19
आप संख्या 19 को अपने होस्ट की रिसोर्स सीमा से कम किसी भी मान में बदल सकते हैं।
Tell us what you need
Compare available plans or describe your workload so we can discuss a suitable starting point.