2012-07-12 13 views
6

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

चूंकि ये डेटा निर्देशिका बहुत बड़ी हैं, मुझे कई नहीं चाहिए लोगों को मूल डेटा की प्रतिलिपि बनाने के लिए, इसलिए मैं निर्देशिका की प्रतिलिपि बनाना चाहता हूं और मूल से लिंक को नए से जोड़ना चाहता हूं। हालांकि, मैं चाहता हूं कि किसी भी बदलाव को केवल नई निर्देशिका में रखा जाए, और केवल मूल पढ़ने को छोड़ दें। मैं केवल विशिष्ट फ़ाइलों को लिंक नहीं करना चाहता हूं जिन्हें मैं परिभाषित करता हूं क्योंकि इन निर्देशिकाओं में डेटा इतना भिन्न है।

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

उत्तर

21

यह पता चला यह है कि मैं क्या करना चाहता था है:

cp -al <origdir> <newdir> 

यह एक संपूर्ण निर्देशिका कॉपी और मूल फाइलों को हार्ड लिंक का निर्माण करेगा। यदि मूल फ़ाइल हटा दी जाती है, तो कॉपी की गई फ़ाइल अभी भी मौजूद है, और इसके विपरीत। यह पूरी तरह से काम करेगा, लेकिन मुझे पता चला कि newdir पहले से मौजूद नहीं होना चाहिए। जब तक मूल फ़ाइलें केवल पढ़ने के लिए हों, तब तक आप मूल निर्देशिका की एक समान, सुरक्षित प्रतिलिपि बनाने में सक्षम होंगे।

+1

यह तब करना संभव है जब मूल फ़ाइलें केवल पढ़ने के लिए न हों, लेकिन किसी भी प्रतिलिपि में किए गए कोई भी परिवर्तन दोनों प्रतियों को समान रूप से बनाए जाएंगे, इसलिए हार्ड लिंकिंग उपयुक्त नहीं है यदि आप कॉपी किए गए फ़ाइल को संशोधित किए बिना संशोधित करना चाहते हैं असली। – thomasrutter

2

हालांकि, चूंकि आप इस तरह की तलाश कर रहे हैं कि लोग परिवर्तन वापस लिख सकें, UnionFS शायद आप जो खोज रहे हैं। यह केवल पढ़ने-पढ़ने और पढ़ने-लिखने वाले स्थानों को एक साथ जोड़ना है।

यूनियनफ्स केवल पढ़ने-पढ़ने और पढ़ने-लिखने वाली शाखाओं के किसी भी मिश्रण की अनुमति देता है, साथ ही फैन-आउट में कहीं भी शाखाओं का सम्मिलन और हटाना।


मूल रूप से मैं इस सिफारिश करने के लिए जा रहा था (मैं इसे एक बहुत का उपयोग करें):

मान लिया जाये कि अनुमतियों कोई समस्या नहीं होगी (जैसे ही पढ़ने की आवश्यकता है) मैं बाँध-माउंट करने के लिए सुझाव है कि उन्हें जगह में।

mount -B <original> <new-location> 
# or 
mount --bind <original> <new-location> 

<new-location> फ़ोल्डर के रूप में मौजूद होना चाहिए।

+0

सुझावों के लिए धन्यवाद! मैंने माउंट बांधने की कोशिश की और एक नया माउंट प्वाइंट बनाने में सक्षम था। हालांकि: 1) मेरे पास हजारों निर्देशिकाएं हैं, जिन्हें हजारों माउंट की आवश्यकता होगी 2) मैंने नई निर्देशिका में एक फाइल बनाई है और यह मूल निर्देशिका –

+0

में भी दिखाया गया है, लेकिन निर्देशिकाओं के हजारों लेकिन उनको एक भी रूट नहीं है जिसका उपयोग किया जा सकता है ? आपको इस तरह के परिदृश्य में उपयोगकर्ताओं के रूप में अधिकतर माउंट की आवश्यकता होगी। यहां तक ​​कि यदि अलग-अलग उपयोगकर्ताओं के पास एक ही सामान्य रूट के विभिन्न उप-फ़ोल्डर्स हैं, तो माउंट की संख्या अभी भी उपयोगकर्ताओं की संख्या के बराबर होगी। – 0xC0000022L

+0

एक डुप्लिकेट पेड़ संभव है ... लेकिन ओएस स्तर पर चीजों को बदलना आदर्श नहीं है। मुझे लगता है कि मैं मूल रूप से मूल रूप से फ़ाइलों और निर्देशिकाओं के लिंक बनाने की कोशिश कर सकता हूं, और केवल यह सुनिश्चित कर सकता हूं कि मूल फ़ाइलें केवल –