असफल प्रयास के बाद शेष फ़ाइलों को कैसे cp करें


23

मैं एक बड़ी निर्देशिका को एक ड्राइव से दूसरे में कॉपी करने की कोशिश कर रहा हूं। मैं गलती से लॉग आउट होने से पहले समाप्त हो गया था, इसलिए केवल 80% से अधिक फ़ाइलों की प्रतिलिपि बनाई गई थी। क्या खरोंच से शुरू हुए बिना शेष फाइलों को कॉपी करना है?

जवाबों:


35

मैं कोशिश करूँगा,

rsync -a /from/file /dest/file

आप जैसे अन्य विकल्पों का उपयोग कर सकते हैं --append, -P (--partial --progress)। अधिक जानकारी के लिए आदमी rsync देखें ।

या यदि आप उपयोग कर रहे हैं cpतो उपयोग करें cp -u

से man cp:

-u, --update
     copy only when the SOURCE file is newer than the destination file or when the destination file is missing.

1
मुझे इसे राहुल के पास देना होगा, उसने आपको सिर्फ इसके लिए हराया है, लेकिन धन्यवाद और सभी को उत्थान मिलता है!
बैरो 32

3
यदि पहली प्रति अचानक समाप्त हो गई, तो फ़ाइलों में से एक को केवल आंशिक रूप से कॉपी किया जा सकता है, और cp -uदेखभाल नहीं हो सकती है, क्योंकि यह केवल टाइमस्टैम्प की जांच करती है, आकार की नहीं ... इसलिए आपको touchइसका उपयोग करने की आवश्यकता होने पर सबसे पहले स्रोत फ़ाइलों की आवश्यकता होगी । । (या बस उपयोग करें rsync।)
ilkachachu

@ilkachachu यह सही है। मैं जल्द ही इसे अपडेट करूंगा।
राहुल

क्या cp कभी भी एक फ़ाइल को केवल आंशिक रूप से स्थानांतरित करता है? यदि ऐसा होता है, तो -u ऐसा लगता है कि यह आपको एक ऐसी निर्देशिका के साथ छोड़ देगा जो केवल आंशिक रूप से काम कर रही थी।
ट्रेवर

15

आंशिक फ़ाइल स्थानांतरण के लिए, cpआपकी आवश्यकता के अनुसार नहीं हो सकता है।

मैं rsyncइसके बजाय उपयोग करने का सुझाव देता हूं । यहां तक ​​कि जब हस्तांतरण विफल हो जाता है, तो आप बाद में कमांड को बाद में फिर से चला सकते हैं, और यह केवल लापता फाइलों की नकल करेगा।

उदाहरण:

$ rsync -aPEmivvz from/ to/

( निर्देशिका from/में कॉपी करेंगे to/)

चूंकि rsyncप्रत्येक हस्तांतरण के बाद सिंक्रनाइज़ करना और जांचना, सुनिश्चित करना कि फाइलों को सही ढंग से कॉपी किया गया है, तुच्छ है।

जब भी नेटवर्क या एक्सटर्नल ड्राइव पर फाइल कॉपी की जाती है, जिसमें प्लग-इन डिवाइस, जैसे एसडी-कार्ड्स आदि शामिल होते हैं, -aPEmivvzमेरे लिए स्वैच सेट मेरा स्टैण्डर्ड गो-टू सेलेक्शन है।

ये वे स्विच हैं जिनका मैं लगभग हमेशा उपयोग करता हूं:

-a: "संग्रह", शामिल -rlptgo(पुनरावर्ती, सहानुभूति सहानुभूति के रूप में, अनुमतियाँ, समय, समूह, स्वामी)

-P: "आंशिक प्रगति" प्रत्येक फ़ाइल के लिए अच्छा प्रगति बार दिखाता है

-E: "निष्पादन" संरक्षित करता है कि क्या निष्पादन योग्य है या नहीं

-m: "नोइम्टी" खाली डायर को चुभता है

-i: सभी अपडेट के लिए "सारांश" प्रिंट परिवर्तन सारांश

-vv: "अधिक क्रिया"

-z: "संपीड़न"


6

क्या आप शायद बजाय चाहते हैं cpइस मामले में है rsync

बस एक निर्देशिका संरचना को नए स्थान पर पुनरावर्ती रूप से कॉपी करना:

rsync -av /path/to/source /path/to/destination 

4

आपको इसके cpलिए उपयोग नहीं करना चाहिए । जैसा कि दूसरों ने कहा है कि यह नौकरी के लिए सही उपकरण नहीं है। सही उपकरण आपके लक्ष्यों पर निर्भर करने वाला है।

यदि आप एक सीधी कॉपी चाहते हैं:

rsync /source /destinationझंडे के कुछ स्तर के साथ। कुछ बहुत अच्छे उदाहरणों के लिए अन्य उत्तर देखें।

यदि आप द्वि-दिशात्मक अद्यतन करना चाहते हैं

unisonजाने का रास्ता है। Rsync बिडायरेक्शनल सिंक के साथ संघर्ष रिज़ॉल्यूशन पर बहुत अच्छा नहीं करता है। विशेष रूप से हटाता है। तो आप चाहते हैं कि द्वि-दिशात्मक प्रतियां आग लगेंunison

यदि आप बैकअप चाहते हैं और फाइलें पाठ आधारित हैं, तो आप उपयोग करने का प्रयास कर सकते हैं git। Git को स्थानीय रूप से चलाया जा सकता है, "सर्वर" की कोई आवश्यकता नहीं है। वास्तव में, जीआईटी सर्वर केवल फाइल शेयरिंग मेथड हैं। आप पूरी तरह से बैकअप ड्राइव पर एक git रेपो कर सकते हैं और इसे "पुश" कर सकते हैं। फिर से यह केवल तभी काम करता है जब फाइलें पाठ आधारित होती हैं और आपका एकतरफा बैकअप लेने की कोशिश होती है।

फिर से यदि आपका बैकअप हो रहा है (और सिर्फ एक बार नहीं) तो deja-dupe, BackIntime या इसी तरह के अन्य विकल्पों को देखें। वे समय में एक बिंदु पर डेटा का स्नैपशॉट लेते हैं। वे सभी हुड के नीचे rsync चलाते हैं।


4

आप सभी फ़ाइलों को फिर से कॉपी कर सकते हैं, प्रत्येक ओवरराइट के लिए पुष्टि पूछ सकते हैं, फिर स्वचालित रूप से प्रश्न का उत्तर दे सकते हैं:

yes n | cp -i /source /dest

(आपने शायद अधिक विकल्पों का उपयोग किया है, जैसे -r, इसलिए उन्हें जैसे जोड़ें cp -pri /source /dest...)


3

rsyncनिम्नलिखित विकल्पों के साथ कमांड का उपयोग करें:

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