सवाल एसपीपी निर्देशिका दोबारा कॉपी कर सकते हैं?


वर्तमान में मैं केवल एक ही प्रतिलिपि बना सकता हूं .tar फ़ाइल। लेकिन मैं निर्देशिकाओं को दोबारा कैसे कॉपी कर सकता हूं scp?


518
2018-04-29 04:24


मूल




जवाब:


हाँ, उपयोग करें -r:

scp -rp sourcedirectory user@dest:/path
  • -आर का मतलब रिकर्सिव है
  • -पी मूल फ़ाइल से संशोधन समय, एक्सेस समय, और मोड को संरक्षित करता है।

नोट: यह बनाता है sourcedirectory के भीतर /path इस प्रकार फाइलें अंदर होंगी /path/sourcedirectory


838
2018-04-29 04:28



हालांकि ध्यान रखें कि यह सिम्लिंक को संरक्षित नहीं करेगा। - CpnCrunch
ध्यान दें कि -pr (उल्टा क्रम में विकल्प) फ़ोल्डरों की प्रतिलिपि नहीं करेंगे, बजाय उनकी सामग्री को लक्ष्य निर्देशिका में डालेंगे (जाहिर है, विकल्प मामलों का क्रम)। - pms
किसी कारण के लिए /path प्रतीत होता है प्रतीत होता है userरों $HOME - मैं इसे बिना पूर्ण कैसे बना सकता हूं root@? - Jonathan
हाँ, एससीपी ऐसी फाइलें कभी नहीं रखता है जहां मैं चाहता हूं। अक्सर जब किसी निर्देशिका को प्रतिस्थापित करने का प्रयास करते हैं, तो मैं इसके बजाय उसी नाम के साथ किसी अन्य निर्देशिका के साथ समाप्त होता हूं। मैं इसके साथ अतिरिक्त सावधान हूं। - sudo


जबकि पिछले उत्तर तकनीकी रूप से सही हैं, आपको भी उपयोग करने पर विचार करना चाहिए rsync बजाय। rsync एक diff तंत्र के साथ भेजने और प्राप्त करने वाले पक्षों पर डेटा की तुलना करता है, इसलिए इसे पहले से भेजे गए डेटा को फिर से भेजने की आवश्यकता नहीं है।

यदि आप रिमोट मशीन पर एक से अधिक बार कॉपी करने जा रहे हैं, तो इसका उपयोग करें rsync। असल में, इसका उपयोग करना अच्छा है rsync हर बार क्योंकि इसमें फ़ाइल अनुमतियों और स्वामित्व की प्रतिलिपि बनाने और कुछ फ़ाइलों या निर्देशिकाओं को छोड़कर चीजों के लिए अधिक नियंत्रण होता है। सामान्य रूप में:

$ rsync -av /local/dir/ server:/remote/dir/

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

इसके अलावा, rsync आपको बाधाओं से आसानी से बाधित करने की अनुमति देता है, विपरीत scp

अंत में, के आधुनिक संस्करण rsync डिफ़ॉल्ट रूप से ssh पर चलाते हैं, तो अगर scp पहले से ही काम कर रहा है, rsync बहुत अधिक ड्रॉप-इन प्रतिस्थापन होना चाहिए।


149
2018-04-29 05:11



"कोई डेटा स्थानांतरित नहीं किया जाएगा" बेशक, यह निर्धारित करने के लिए आवश्यक डेटा कि वास्तव में क्या है या नहीं बदला है। - thsutton
हां हाँ मैंने स्पष्ट रूप से थोड़ा सा चमक लिया। हम यहां क्वांटम उलझन में बात नहीं कर रहे हैं। - Phil Hollenback
यह बहुत दुखी है कि ओएसएक्स, win7 और यहां तक ​​कि उबंटू भी अपने जीयूआई के लिए rsync की तरह कुछ उपयोग नहीं करता है। - cregox
dmourati मैंने अपने सवाल का जवाब दिया था। मैंने उसे ऐसा करने का एक बेहतर तरीका बताया। - Phil Hollenback
@raphnguyen: नहीं, स्थानीय निर्देशिका से फ़ाइलों को हटाने से उन्हें दूरस्थ निर्देशिका से हटाया नहीं जाएगा। आप इस व्यवहार को साथ बदल सकते हैं --delete rsync विकल्प। - Phil Hollenback


यही वही है -r विकल्प के लिए है। :)

देखें एसपीपी मैन पेज यदि आवश्यक हो तो अधिक जानकारी के लिए।


30
2018-04-29 04:27





रिकर्सिव कॉपी विकल्प '-r' (निचला मामला)

scp -r

जो मैं नियमित स्थानीय रिकर्सिव कॉपी विकल्प '-आर' (ऊपरी मामला) के साथ भ्रमित करता हूं

cp -R

9
2017-09-11 17:53



मैं सिर्फ सीपी और एसपीपी के बीच अंतर को इंगित करना चाहता था -आर और -आर समान नहीं हैं। unix.stackexchange.com/questions/18712/... - Tarun


एसएसएच पर rsync का उपयोग करने का सबसे अच्छा तरीका है

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/

मेरे पसंदीदा विकल्प हैं- Pazvessh --delete:

  • -a: संग्रह मोड (सिमलिंक को संरक्षित करने सहित कई डिफ़ॉल्ट सामान्य विकल्प शामिल करें)
  • -z: संपीड़ित करें
  • -v: verbose: फाइलें दिखाएं
  • -पी: फ़ाइलों को किए गए / शेष फ़ाइलों के रूप में प्रोजेस दिखाएं
  • -e ssh: ssh प्रोटोकॉल में rsync करें
  • --delete: गंतव्य में फ़ाइलों को हटाएं जो अब स्रोत में नहीं हैं

4
2017-11-05 18:33



के सभी संस्करण rsync मैंने उपयोग किया है उपयोग करेंगे ssh डिफ़ॉल्ट रूप से, तो -essh जरूरत होने की संभावना नहीं है। और रिमोट होस्ट से कनेक्ट करने के लिए प्रयुक्त कमांड का विकल्प वास्तव में प्रतिलिपि बनाने के लिए वास्तव में असंबंधित है। - kasperd


रिकर्सिव कॉपी फ्लैग की तलाश करने के बाद, और सफलतापूर्वक इसका इस्तेमाल इस पोस्ट के लिए धन्यवाद, मैं सिर्फ एक सुझाव पोस्ट करना चाहता हूं।

यदि मामला यह है कि आप एक निर्देशिका (प्रतिलिपि) की प्रतिलिपि बना रहे हैं। हो सकता है कि अगर फ़ाइलों को संपीड़ित भेजा जाता है तो आप स्थानांतरण में समय बचा सकते हैं

अंत में मैंने क्या किया था:

local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz

उम्मीद है की यह मदद करेगा


3
2018-06-06 18:00



फ़ाइल एक्सटेंशन या तो होना चाहिए .tar.gz या .tgz चूंकि फ़ाइल एक gzipped tar archive है (के बाद से -z ध्वज का उपयोग किया जाता है)। - anthonybell


आप इस सरल कमांड के साथ एक संपीड़ित संग्रह में एक निर्देशिका को दोबारा प्रतिलिपि बना सकते हैं:

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...


1
2018-01-06 07:20