2011-10-27 12 views
13

मैं एक तरफ (ए) और अन्य जगह में अन्य फ़ाइलों का एक बहुत (बी)ओवरराइट फ़ाइल यदि एक ही

से फ़ाइलों की एक बहुत कुछ है उनमें से नहीं सामग्री मैं बी करने के लिए एक को कॉपी कर रहा हूँ , बहुत सारी फाइलें समान हैं, लेकिन सामग्री अलग हो सकती है!

आमतौर पर मैंने इसे करने के लिए एमसी (आधी रात कमांडर) का उपयोग किया, और "अलग आकार के ओवरराइट" का चयन किया। लेकिन एक स्थिति है जब आकार समान है, लेकिन सामग्री अलग है। इस मामले में एमसी बी जगह में फ़ाइल रखता है और इसे ओवरराइट नहीं करता है।

एमसी ओवरराइट संवाद में एक काम "अपडेट" है, मुझे नहीं पता कि यह क्या कर रहा है? मदद में ऐसी कोई जानकारी नहीं है, शायद यह एक समाधान है?

तो मैं समाधान जो मुझे बी जगह में बी करने के लिए एक से सभी फाइलों को कॉपी और फ़ाइलों के ऊपर लिख अगर वे मौजूद है और सामग्री ए

अगर 'बी' के स्थान पर फ़ाइल मौजूद है से अलग है (मदद कर सकते हैं खोज रहा हूँ वही नाम) और सामग्री अलग है इसे हर बार "ए" स्थान से फ़ाइल द्वारा ओवरराइट किया जाना है।

क्या आप कोई समाधान जानते हैं?

cp -ru A/* B/ 

निर्देशिका बी को रिकर्सिवली निर्देशिका एक से सभी बदली हुई फ़ाइलें (और अधिक हाल टाइमस्टैम्प) की प्रतिलिपि चाहिए

तुम भी -a बजाय में -r उपयोग कर सकते हैं:

+0

Btw, सभी फाइलों को सादा पाठ फ़ाइलें – user1016265

उत्तर

17

आप कमांड लाइन करने की कोशिश की है आप जो करना चाहते हैं उसके आधार पर कमांड लाइन। cp मैन पेज देखें।

+1

हैं ऐसा लगता है कि यह मैं क्या जरूरत है -u साधन केवल नकल जब स्रोत फ़ाइल गंतव्य फ़ाइल से नए या जब गंतव्य फ़ाइल याद आ रही है है, लेकिन क्या यह टाइमस्टैम्प की खोज ? रिकॉर्ड समय ? और वास्तव में यह आदर्श समाधान नहीं है लेकिन अब के लिए सबसे आसान, धन्यवाद। – user1016265

0

आप कुछ प्रकार की 'इंडेक्स' फ़ाइल रखना चाहेंगे जो फाइलों के SHA-1 हैश रखती है, जिसे आप लिखते समय बनाते हैं। फिर आप 'स्रोत' हैश की गणना कर सकते हैं और इंडेक्स फ़ाइल से 'गंतव्य' हैश के खिलाफ इसकी तुलना कर सकते हैं। यह केवल तभी काम करेगा यदि यह प्रक्रिया गंतव्य पर लिखी गई एकमात्र तरीका है।

+0

क्या आप कोई सॉफ्टवेयर जानते हैं जो कुछ ऐसा कर सकता है? 1. स्रोत फ़ाइल पेड़ के लिए हैश बनाएं। 2. गंतव्य फाइल पेड़ के लिए हैश बनाएं। 3. इसकी तुलना करें और केवल बदली गई फ़ाइलों की प्रतिलिपि बनाएँ। आर ight? – user1016265

+0

हाथ से नहीं, नहीं, लेकिन यह openssl लाइब्रेरी का उपयोग करके खुद को लिखने के लिए एक मजेदार चीज की तरह लगता है :) – trojanfoe

9

मैं rsync का उपयोग करता हूं क्योंकि यह फ़ाइल की तारीख पर भरोसा नहीं करेगा बल्कि वास्तव में जांच करेगा कि फ़ाइल की सामग्री बदल गई है या नहीं। उदाहरण के लिए:

#> rsync -cr <directory to copy FROM> <directory to copy TO> 

Rsync प्रतियां या तो करने के लिए या एक दूरस्थ होस्ट से, या स्थानीय स्तर पर वर्तमान मेजबान पर (यह दो दूरदराज के मेजबान के बीच फ़ाइलों की प्रतिलिपि बनाने का समर्थन नहीं करता) फ़ाइलें।

-c, --checksum skip based on checksum, not mod-time & size 
-r, --recursive recurse into directories 

अधिक विकल्प और विवरण के लिए man rsync देखें।

+0

'-c' स्विच यहां कुंजी है। मैं "संशोधित" टाइमस्टैम्प से केवल टाइमस्टैम्प की बजाय फ़ाइल * सामग्री * को बदलने और तुलना करने से बचना चाहता था। धन्यवाद! – aardvarkk