UNIX ऐसी निर्देशिका बनाता है जिसमें अन्य निर्देशिका की सामग्री दिखाई देती है


3

अगर मेरे पास 2 निर्देशिकाएं हैं, तो क्या कोई ए और बी किसी को एक निर्देशिका बनाने की एक सुविधाजनक विधि का सुझाव दे सकता है जो फ़ाइलों की नकल के बिना ए और बी दोनों की सामग्री है? फिलहाल जो मैं उपयोग कर रहा हूं वह ln -s * है जो सिम्पल लिंक का लोड करने के लिए है और जब मैं काम कर रहा होता हूं तब सिम्पल लिंक को हटा देता हूं। मैं इसे पसंद करूंगा, हालांकि यदि उप निर्देशिकाओं की सामग्री को विलय कर दिया गया है, और इसे आत्म-लिंक विधि के साथ प्रबंधित करने के लिए कुछ फ़िदालिंग की आवश्यकता हो सकती है।

यह ठीक है अगर परिणामी निर्देशिका को केवल आवेदन दिए जाने पर ही पढ़ा जाता है।


क्या आप केवल अपनी सभी सामग्रियों के बजाय निर्देशिका को सिमिलिंक नहीं कर सकते? Ie ln -s a/ bएक सिम्लिंकड निर्देशिका बनाएगा bजो इंगित करता है a
डैनियल एंडरसन

1
@ डैनियल एंडरसन एक और बी के विलय सामग्री को दिखाने के लिए एक निर्देशिका नहीं बनाएंगे जो प्रश्न का बिंदु था।
ऊंट

यह एक तरह से गैर-तुच्छ है। A और b दोनों में समाहित फ़ाइलों के लिए आप टकराव को कैसे मिलाते हैं? आपका इरादा क्या है? आप हार्ड-लिंक फ़ाइलों को a और b से किसी अन्य निर्देशिका c में लिंक करने का प्रयास कर सकते हैं, इसलिए आपको दोनों निर्देशिकाओं में परिवर्तन पर फ़ाइलें अपडेट मिलती हैं।
p4553d

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

आप किस OS / Distro का उपयोग कर रहे हैं?
डेनिस

जवाबों:


4

आप प्रभावी रूप से एक ही आरोह बिंदु में दो निर्देशिकाओं (इस संदर्भ में शाखाएं) को ओवरलेइंग करके यूनियनएफएस के साथ निर्देशिका में विलय कर सकते हैं ।

UnionFS के कई कार्यान्वयन हैं; UnionFsFuse सरल लोगों में से एक है, क्योंकि यह एक अनुप्रयोग है (कर्नेल पैच के बजाय)।

वेबसाइट में उनके संग्रह का लिंक है। स्रोत कोड को संकलित करना अधिकांश विकृतियों पर सीधा होना चाहिए।

उबंटू में, उदाहरण के लिए, यह निम्नलिखित कमांड को निष्पादित करके पैकेज यूनियनफ्यूज-फ्यूज को स्थापित करने के लिए पर्याप्त है :

sudo apt-get install unionfs-fuse

एक बार स्थापित होने के बाद, आप निर्देशिकाओं को ओवरले कर सकते हैं। तरह-तरह के विकल्प हैं। मैं संक्षेप में सबसे बुनियादी बातें समझाता हूँ:

  • आदेश

    unionfs-fuse foo:bar baz
    

    निर्देशिका बाज़ में निर्देशिका फू और बार की सामग्री को ओवरले करता है । 1

    यह ओवरले केवल पढ़ने के लिए होगा; baz में फ़ाइल बनाने या संशोधित करने के किसी भी प्रयास के परिणामस्वरूप अनुमति अस्वीकृत हो जाएगी। त्रुटि। हालाँकि, आप अभी भी फू और बार के अंदर फ़ाइलों को बनाने और संशोधित करने में सक्षम होंगे ।

    टकरावों को एक निश्चित तरीके से नियंत्रित किया जाता है: यदि कोई फ़ाइल किसी उच्च शाखा ( foo ) में मौजूद है , तो उसे निचली शाखा ( बार ) में उसी नाम की फ़ाइल पर वरीयता मिलेगी ।

  • आदेश

    union-fuse foo=RW:bar=RO baz
    

    फू लेखन योग्य और बार (केवल पढ़ने के लिए) बनाता है । फू की फाइलों को संशोधित करना संभव होगा, लेकिन बार की फाइलों को संशोधित नहीं किया जाएगा। बाज में सभी नई बनाई गई फाइलें फू में दिखाई देंगी ।

  • आदेश

    union-fuse -ocow foo=RW:bar=RO baz
    

    अंतिम आदेश के समान है। लिखने पर प्रतिलिपि विकल्प ( cow) प्रभाव है कि की एक फ़ाइल को संशोधित करने का प्रयास किया है बार अंदर baz में फ़ाइल का एक संशोधित प्रतिलिपि में परिणाम होगा foo (या किसी अन्य उच्च स्तर लिखने योग्य शाखा)।

  • आज्ञा के साथ

    union-fuse foo=RW:bar=RW baz
    

    सभी को संशोधित किया जा सकता है। शीर्ष शाखा ( फू ) में नई फाइलें बनाई जाएंगी ।

  • आदेश

    union-fuse foo=RO:bar=RW baz
    

    baz के अंदर बार की फ़ाइलों को संशोधित करने की अनुमति देता है , लेकिन कोई भी नई फ़ाइल नहीं बनाई जा सकती है।

  • आदेश

    sudo umount baz
    

    यूनियन माउंट को खोल देता है।

यह भी देखें: आदमी यूनियनफ्यूज-फ्यूज


इस आदेश को निष्पादित करने से पहले 1 बाज होना चाहिए। यह आगे के सभी आदेशों पर भी लागू होता है।

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