2012-01-09 11 views
9

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

+0

[एसपीपी या एसएफटीपी प्रतिलिपि एकाधिक फाइलों के साथ एकाधिक फाइलों की प्रतिलिपि] [http://stackoverflow.com/questions/16886179/scp-or-sftp-copy-multiple-files-with-single-command) – tripleee

उत्तर

4

यदि आप एक ही ग्लोब पैटर्न का उपयोग कर रिमोट सिस्टम से कॉपी करने के लिए उन फ़ाइलों के सभी नाम व्यक्त कर सकते हैं, तो आप इसे एक scp कमांड में कर सकते हैं। यह उपयोग स्थानीय फाइलों पर सभी फ़ाइलों के लिए केवल एक गंतव्य फ़ोल्डर का समर्थन करेगा। उदाहरण के लिए:

scp 'RemoteHost:/tmp/[abc]*/*.tar.gz' . 

प्रतियां दूरस्थ सिस्टम से फ़ाइलें जो ऐसे नाम हैं (something).tar.gz कर रहे हैं और जिनमें से उपनिर्देशिका में स्थित हैं के सभी /tmp जिनके नाम a, b, या c साथ शुरू करते हैं। एकल उद्धरण स्थानीय प्रणाली पर शैल से व्याख्या किए जाने से ग्लोब पैटर्न की रक्षा करना है।

यदि आप उन सभी फ़ाइलों को व्यक्त नहीं कर सकते हैं जिन्हें आप एक ग्लोब पैटर्न के रूप में प्रतिलिपि बनाना चाहते हैं और आप अभी भी एक ही कमांड का उपयोग करके प्रतिलिपि बनाना चाहते हैं (और एक एकल एसएसएच कनेक्शन जो केवल एक बार आपके पासवर्ड के लिए पूछेगा) तो आप या तो कर सकते हैं:

  • scp तुलना में एक अलग आदेश का उपयोग करें, sftp या rsync, या
  • ओपन दूरस्थ होस्ट से एक SSH मास्टर कनेक्शन की तरह और कहा कि गुरु के दास के रूप में कई SCP आदेशों को चलाने के। दास मास्टर कनेक्शन पर पिगबैक करेंगे जो पूरे समय खुला रहता है और आपको पासवर्ड के लिए नहीं पूछेगा। Ssh manpage में मास्टर & दास कनेक्शन पर पढ़ें।
4

एक प्रमुख जोड़ी बनाएं, सार्वजनिक कुंजी को सर्वर की ओर कॉपी करें। फ़ाइल ~/.ssh/identity.pub अंदर

ssh-keygen -t rsa 

संलग्न सामग्री दायर करने के लिए ~/.ssh/उपयोगकर्ता सर्वर साइड की authorized_keys2। आपको अब पासवर्ड टाइप करने की आवश्यकता नहीं है।

हालांकि, सावधान रहें! कोई भी जो आपके "स्थानीय खाते" तक पहुंच सकता है, बिना पासवर्ड के सर्वर पर "ssh" भी कर सकता है।

पहले ही उल्लेख किया ग्लोब के अलावा
+0

ओह , मैंने सोचा कि ओपी के पास एसएसएच कुंजी का उपयोग करने में असमर्थ होने का कोई कारण है। मैंने गलत पढ़ लिया। ऐसी कोई आवश्यकता नहीं प्रतीत होती है। कुंजी, जैसा कि आप सुझाव देते हैं, मैं आमतौर पर क्या उपयोग करूंगा! – Celada

+0

मुझे यह विधि पता था, लेकिन मैं अपने हाथों को सामान्य निर्देशिकाओं जैसे .ssh पर नहीं रखना चाहता था। –

11

:

आप {,} उपयोग कर सकते हैं एक ही बयान

जैसे वैकल्पिक रास्तों/pathparts परिभाषित करने के लिए: scp [email protected]:/{PATH1,PATH2} DESTINATION

+6

ध्यान दें कि आपको ब्रेसिज़ को उद्धृत करना या बचाना है ताकि यदि आप दो बार पासवर्ड दर्ज करना टालना चाहते हैं तो खोल उन्हें विस्तारित नहीं करता है। जैसे 'scp 'उपयोगकर्ता @ होस्ट: {PATH1, PATH2}' DESTINATION' – yonran

+1

लक्ष्य पथ के बारे में क्या? क्या 'scp' उपयोगकर्ता @ होस्ट जैसे कुछ करने का कोई तरीका है: {PATH1, PATH2} 'निर्देशिका/{FILE1, FILE2} '? – Ant

2

वैकल्पिक रूप से, अगर आप सार्वजनिक कुंजी प्रमाणीकरण उपयोग नहीं कर सकते , आप निम्न कॉन्फ़िगरेशन को एसएसएच (या तो ~/.ssh/config या उचित कमांड लाइन तर्क के रूप में) जोड़ सकते हैं:

ControlMaster auto 
ControlPath /tmp/ssh_mux_%h_%p_%r 
ControlPersist 2m 

इस कॉन्फ़िगरेशन के साथ, SSH कनेक्शन 2 मिनट के लिए खुला रखा जाएगा, इसलिए आपको केवल पहली बार पासवर्ड टाइप करना होगा।

This post इस सुविधा पर अधिक जानकारी है।

संबंधित मुद्दे

 संबंधित मुद्दे