मैं गंतव्य फ़ोल्डर को अधिलेखित करने के लिए scp कमांड कैसे प्राप्त कर सकता हूं


38

मैं एक दूरस्थ पीसी के लिए कुछ फ़ाइलों को कॉपी करने के लिए scp कमांड का उपयोग कर रहा हूं, जैसा कि आप scp के साथ करते हैं :)

मैं ध्यान देता हूं कि फ़ाइलों के लिए एक स्कैप कॉपी का डिफ़ॉल्ट व्यवहार किसी भी मौजूदा फाइलों को अधिलेखित करना है। अब मैं एक फ़ोल्डर को कॉपी करना चाहता हूं, इसलिए मैं मूल रूप से एक ही काम करता हूं:

scp -r <source_path> user@myOtherPc:<dest_path>

जहां <> में भाग मेरे फ़ोल्डर पथ हैं। हालाँकि जब मैं इसे चलाता हूं तो मुझे "फ़ाइल मौजूद है" संदेश मिलता है। क्या इसके चारों ओर एक रास्ता है? बल के कुछ प्रकार से अधिक लिखने?

धन्यवाद, चारा


2
क्या आप पथ के कुछ उदाहरण दे सकते हैं? मैं अपने सिस्टम पर इसे पुन: पेश करने के लिए प्रदर्शन नहीं करता हूं। इसके अलावा, क्या आपने फ़ाइल अनुमतियों की जाँच की है?
लेवन्स

यदि आप वर्बोज़ मोड का उपयोग करते हैं तो क्या यह आपको कोई उपयोगी जानकारी देता है? -v। इसके अलावा, क्या आप गंतव्य की ओर निरपेक्ष या सापेक्ष पथ का उपयोग कर रहे हैं? मुझे लगता है कि अगर गंतव्य फ़ोल्डर पहले से मौजूद है, तो यह गंतव्य फ़ोल्डर के अंदर स्रोत पथ को अधिलेखित करने के बजाय बनाने जा रहा है ( testdir/testdir)
beroe

2
यह अजीब है कि आप इसे प्राप्त करते हैं। माना जाता है कि scp में noclobber नहीं है ...
beroe

1
@ लीवन्स मैंने अनुमतियों की जांच नहीं की है, मैंने अभी देखा है और मुझे लगता है कि आप सही हो सकते हैं। मैंने लक्ष्य क्षेत्र में सब कुछ हटा दिया और फिर से केवल "एससीपी" कमांड का उपयोग करना शुरू कर दिया और "रूट" उपयोगकर्ता का उपयोग कर रहा था और मैं फ़ाइलों / फ़ोल्डर को कई बार कॉपी करने में सक्षम था :) ... मैं 100% सुनिश्चित नहीं हूं कि मैं क्या अनुमति मुद्दा हूं था, लेकिन अब मेरे पास इस मुद्दे पर एक "हैंडल" है जिसे मैं संभवतः समझ सकता हूं, धन्यवाद
कोड_फोडर

1
@beroe हां, यही मैंने भी सोचा था ... इसने मुझे भ्रमित कर दिया, लेकिन मुझे लगता है कि मैंने अनुमतियों के साथ यहां कुछ उपयोगकर्ता त्रुटि की है, मैं अभी तक विशेषज्ञ नहीं हूं :( लेकिन मैं वर्बोस-नेस की कोशिश करूंगा अगली बार मेरे पास एक मुद्दा है कि अधिक जानकारी प्राप्त करने के लिए, धन्यवाद। इसके अलावा, मैंने देखा है कि कभी-कभी आपको "फ़ोल्डर-इन-द फोल्डर" हो रहा होता है ... लेकिन यह एक और मुद्दा है: o
code_fodder

जवाबों:


25

जैसा कि पहले कहा गया था, scp खुशी से किसी भी फ़ाइल को अधिलेखित कर देता है जो पहले से मौजूद है।

"फ़ाइल मौजूद है" समस्या केवल तब हो सकती है जब आपके पास कोई अन्य प्रक्रिया हो (जैसे समवर्ती scp प्रक्रिया, या कुछ और) फ़ोल्डर और फ़ाइलों को एक ही गंतव्य पर लिखना। इसके बजाय rsync का उपयोग करने पर विचार करें।


1
मैं केवल यह जोड़ना चाहूंगा: ... जब तक आप उस फ़ाइल तक पहुंच लिखते हैं ...
एसडीसोलर

5

लेवांस की तरह, मैं इसे दोहराने में असमर्थ रहा हूं, लेकिन क्या आपने ssh के बजाय rsync का उपयोग करने पर विचार किया है? यदि आप बड़ी संख्या में फाइल कॉपी कर रहे हैं, तो rsync एक बेहतर विकल्प हो सकता है। ऑनलाइन इसके लिए कई अच्छे मार्गदर्शक हैं, जैसे कि:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

यह पहला लिंक क्रोन के माध्यम से स्वचालित बैकअप से संबंधित है, इसलिए कुछ निर्देश (जैसे पासफ़्रेज़ के बिना ssh कुंजी बनाना) आपके लिए प्रासंगिक नहीं हो सकता है।


दिलचस्प है, मुझे नहीं पता था कि आप उस तरीके से rsync का उपयोग कर सकते हैं ... बस मैन पेज पर एक त्वरित नज़र थी और ऐसा लगता है कि आप इसका उपयोग बहुत ही समान तरीके से <source_path> और <user @ host के साथ कर सकते हैं: dest_path> पैरामीटर। मुझे 100% यकीन नहीं है कि मैं क्या चाहता हूं क्योंकि मैं चाहता हूं कि मैं हमेशा इस बात की परवाह किए बिना कॉपी / ओवरराइट
करूं कि किस्मत

हाँ, यह एक नाटक होने के लायक हो सकता है क्योंकि इसे फ़ाइल पर कॉपी करना चाहिए अगर इसे बदल दिया गया है (या फ़ाइल का वह हिस्सा जो बदल दिया गया है, मुझे डबल-चेक करना होगा और मैं थोड़ा थक गया हूँ। अभी व)।
बेन

हाहा .... इसे जांचने की चिंता मत करो, मैं वह सामान कर सकता हूं ... लेकिन जानकारी के लिए धन्यवाद :)
code_fodder

आह, शांत, मैं अपनी पलकें खोलने के साधन के रूप में माचिस की तीली देखना बंद कर सकता हूं। ;)
बेन

1
यह काम कर सकता है, लेकिन एक मक्खी को स्वाट करने के लिए स्लेजहेमर का उपयोग करने जैसा है। ;-)
एसडीसोलर

3

आपको यह त्रुटि संदेश तब मिलेगा जब गंतव्य निर्देशिका में पहले से ही उसी फ़ाइल के साथ कोई नाम है जिस स्रोत निर्देशिका को आप स्थानांतरित करने का प्रयास कर रहे हैं। आपके पास समान निर्देशिका में एक निर्देशिका के समान नाम वाली फ़ाइल नहीं हो सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.