scp बहुत स्मार्ट नहीं है: जब एक ही रिमोट होस्ट से कई कमांड लाइन तर्क दिए जाते हैं, तो यह प्रत्येक तर्क के लिए एक नया कनेक्शन खोलता है।
आप rsyncइसके बजाय का उपयोग कर सकते हैं scp, यह इस तरह से (और अन्य तरीकों से) होशियार है।
rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
एक अन्य दृष्टिकोण यह है कि एक से scpअधिक फ़ाइलों का वर्णन करने के लिए एक तर्क पारित किया जाए ।
एक अलग दृष्टिकोण आपके सिस्टम को सेट करना है ताकि आपको हर समय प्रमाणित न करना पड़े। अधिमानतः, कुंजी प्रमाणीकरण सेट करें , जो अधिकांश परिदृश्यों में अधिक सुविधाजनक और अधिक सुरक्षित दोनों है। वैकल्पिक रूप से, या इसके अलावा, कनेक्शन साझाकरण सेट करें , ताकि आपको केवल प्रति सत्र एक बार प्रमाणित करने की आवश्यकता हो। किसी भी स्थिति में, एक उपनाम सेट करें ताकि आपको हर बार उपयोगकर्ता नाम और पोर्ट निर्दिष्ट न करना पड़े। अपने में ~/.ssh/config:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host nick
HostName real-host-name.example.com
User bob
Port 1234
ssh -Nf nickएक कनेक्शन खोलने के लिए चलाएँ , और फिर सभी बाद के कनेक्शन nickमौजूदा कनेक्शन पर गुल्लक करेंगे। अब आप बस चला सकते हैं
scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/