जवाबों:
हाँ, उपयोग करें -r:
scp -rp sourcedirectory user@dest:/path
नोट: यह sourcedirectoryअंदर बनाता है /pathइस प्रकार फाइलें अंदर होंगी/path/sourcedirectory
-pr(उल्टे क्रम में विकल्प) फ़ोल्डरों की नकल नहीं करेंगे, बल्कि उनकी सामग्री को लक्ष्य निर्देशिका (जाहिर है, विकल्पों के क्रम) के लिए।
जबकि पिछले उत्तर तकनीकी रूप से सही हैं, आपको rsyncइसके बजाय उपयोग करने पर भी विचार करना चाहिए । rsyncभेजने और प्राप्त करने वाले पक्षों के डेटा को एक अलग तंत्र के साथ तुलना करता है ताकि इसे पहले से भेजे गए डेटा को फिर से भेजना न पड़े।
यदि आप किसी दूरस्थ मशीन में एक से अधिक बार कुछ कॉपी करने जा रहे हैं, तो उपयोग करें rsync। वास्तव में, यह rsyncहर बार उपयोग करने के लिए अच्छा है क्योंकि इसमें फ़ाइल अनुमतियों की प्रतिलिपि बनाने और कुछ फ़ाइलों या निर्देशिकाओं के स्वामित्व और स्वामित्व जैसी चीजों पर अधिक नियंत्रण है। सामान्य रूप में:
$ rsync -av /local/dir/ server:/remote/dir/
एक दूरस्थ निर्देशिका के साथ एक स्थानीय निर्देशिका सिंक्रनाइज़ करेगा। यदि आप इसे दूसरी बार चलाते हैं और स्थानीय निर्देशिका की सामग्री नहीं बदली है, तो कोई भी डेटा स्थानांतरित नहीं किया जाएगा - scpहर बार चलाने और कॉपी करने की तुलना में बहुत अधिक कुशल ।
इसके अलावा, rsyncआप इसके विपरीत, बहुत आसानी से बाधित स्थानान्तरण से उबरने की अनुमति देता है scp।
अंत में, rsyncssh पर डिफ़ॉल्ट रूप से आधुनिक संस्करण चलते हैं, इसलिए यदि scpपहले से ही काम कर रहे हैं, rsyncतो बहुत ज्यादा ड्रॉप-इन प्रतिस्थापन होना चाहिए।
rsyncकि अधिक कुशल है। एक चीज जो वर्तमान में नहीं है, scpवह है दूरस्थ होस्ट्स के बीच कॉपी करने की अनुमति देना (कम से कम उनमें से किसी एक पर rsync क्लाइंट को चलाए बिना)।
-av: v क्रिया के लिए है, संग्रह के लिए है और एक शॉर्टकट है-surptgoDD जिसका अर्थ है पुनरावर्ती, अधिकार के मालिक की तारीखों और लिंक को संरक्षित करना। यदि आप केवल पुनरावर्ती उपयोग चाहते हैं-r
यही -rविकल्प है। :)
यदि आवश्यक हो तो अधिक जानकारी के लिए scp मैन पेज देखें ।
पुनरावर्ती प्रतिलिपि विकल्प '-r' (निचला मामला)
scp -r
जिसे मैं नियमित स्थानीय पुनरावर्ती प्रतिलिपि विकल्प '-R' (ऊपरी मामले) के साथ भ्रमित करता हूं
cp -R
सबसे अच्छा तरीका है SSH पर rsync का उपयोग करना
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
मेरे पसंदीदा विकल्प हैं -
rsyncमेरे sshद्वारा उपयोग किए गए सभी संस्करण डिफ़ॉल्ट रूप से उपयोग करेंगे , इसलिए -esshइसकी आवश्यकता होने की संभावना नहीं है। और रिमोट होस्ट से कनेक्ट करने के लिए उपयोग की जाने वाली कमांड की पसंद वास्तव में पुनरावर्ती कॉपी करने के लिए असंबंधित है।
पुनरावर्ती प्रतिलिपि ध्वज की तलाश करने के बाद, और सफलतापूर्वक इस पोस्ट के लिए धन्यवाद का उपयोग किया, मैं सिर्फ एक सुझाव पोस्ट करना चाहूंगा।
यदि मामला यह है कि आप एक निर्देशिका की प्रतिलिपि (पुनरावर्ती) कर रहे हैं। हो सकता है कि यदि फ़ाइलें संपीड़ित भेजी जाएँ तो आप स्थानांतरण में समय बचा सकते हैं
अंत में मैंने क्या किया:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
उम्मीद है की यह मदद करेगा
.tar.gzया तो होना चाहिए या .tgzक्योंकि फ़ाइल एक gzipped टार संग्रह है (जब से -zध्वज का उपयोग किया जाता है)।
आप किसी निर्देशिका को इस सरल कमांड के साथ एक संक्षिप्त संग्रह में कॉपी कर सकते हैं:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
उदाहरण के लिए, की सामग्री की प्रतिलिपि करने के लिए /var/logसे domain.comकरने के लिए ~/logs.tgzआप चलाएँ:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
आप पाइप का उपयोग करके लक्ष्य प्रणाली पर फ़ाइलों को भी निकाल सकते हैं। यह आदेश की सामग्री की प्रतिलिपि होगा /var/logपर domain.comकरने के लिए ~/destination/logअपने सिस्टम पर:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
हालांकि एक निर्देशिका को दर्पण करने के लिए, आपको संभवतः उपयोग करना चाहिए rsync...
यदि आप उपयोगकर्ता के पासवर्ड को अंतःक्रियात्मक रूप से इनपुट करने के बजाय एक पैरामीटर के रूप में पास करना पसंद करते हैं, तो आप sshpass( sudo apt-get install -y sshpass) का उपयोग कर सकते हैं ।
उदाहरण:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
आप किसी भी सिस्टम पर पुनरावर्ती निर्देशिकाओं को कॉपी करने के लिए sc कमांड के साथ -r विकल्प का उपयोग कर सकते हैं। यदि आपको किसी और चीज की जरूरत है तो scp कमांड ट्यूटोरियल देखें । -r विकल्प ज्यादातर लिनक्स कमांड में पुनरावर्ती संचालन के लिए खड़ा है।
-rविकल्प पहले से ही वर्षों पहले सुझाया गया है और स्वीकृत उत्तर है।
एक और (दोहराया उपयोग के लिए बेहतर संभावना) विकल्प एनएफएस का उपयोग करना है - एनएफएस-कर्नेल-सर्वर की जांच करें और एनएफएस शेयरों को कैसे सेटअप करें।
scpलेकिन एनएफएस एक विकल्प नहीं है।