जवाबों:
हाँ, उपयोग करें -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
।
अंत में, rsync
ssh पर डिफ़ॉल्ट रूप से आधुनिक संस्करण चलते हैं, इसलिए यदि 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
लेकिन एनएफएस एक विकल्प नहीं है।