2009-04-08 17 views
8

में लूप बनाएं मैं लिनक्स फाइल सिस्टम में लूप कैसे बना सकता हूं? मैं लिनक्स फाइल सिस्टम के निर्देशित एसाइक्लिक ग्राफ (डीएजी) संपत्ति को तोड़ना चाहता हूं। क्या यह संभव है? मैंने एक बार यह स्थिति देखी है जब मैंने अपने उबंटू पर स्क्रैचबॉक्स क्रॉस कंपाइलर स्थापित किया था।लिनक्स फाइल सिस्टम

मुझे नहीं पता कि अब इसे पुन: पेश कैसे करें।

+0

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

+0

आप "पारंपरिक" यूनिक्स फाइल सिस्टम में निर्देशिका को हार्डलिंक नहीं कर सकते हैं। – ephemient

+0

ने प्रश्न – suresh

उत्तर

6

कुछ अन्य प्रतिसाददाताओं पहले से ही उत्तर है कि कैसे स्थापित करने के लिए:

के अंतर्गत उपकरण/छवि माउंट करने के लिए चाहते हैं तो आप भी तो जैसे फाइल सिस्टम के प्रकार (जो FAT16/FAT32 उपयोग करता है) शामिल करने के लिए आवश्यकता हो सकती है लूपबैक डिवाइस का उपयोग करके एक माउंट ऊपर, लेकिन आपने विशेष रूप से bind माउंट्स के बारे में पूछा, जो ar थोड़ा अलग है। यदि आप बाइंड माउंट का उपयोग करना चाहते हैं, तो आप माउंट कमांड में बस --bind निर्दिष्ट करें। उदाहरण के लिए:

mount --bind /original/path /new/path 

यह भी सुलभ /original/path/new/path के माध्यम से कम से फाइल सिस्टम स्थान पहुंचा जा सकता है। ध्यान दें कि यह माउंट पॉइंट्स के बाद नहीं होगा! उदाहरण के लिए, मान लीजिए मैं निम्नलिखित mountpoints है:

/something 
/something/underneath/that 

अब मैं एक bind/something के लिए माउंट बनाने लगता है:

mount --bind /something /new_something 

मैं पथ /new_something/myfile के माध्यम से /something/myfile तरह फ़ाइलों तक पहुँचने में सक्षम हो जाएगा। लेकिन मैं /something/underneath/that/otherfile जैसे /new_something/underneath/that/otherfile के माध्यम से फ़ाइलों तक पहुंचने में सक्षम हूं। आपको प्रत्येक फाइल सिस्टम के लिए अलग bind माउंट सेट करना होगा;

mount --rbind /something /new_something 

एक चेतावनी rbind के बारे में माउंट: या यदि आप एक अपेक्षाकृत नए गिरी है, तो आप rbind माउंट, जो पालन mountpoints कर उपयोग कर सकते हैं वे इस मामले में जहां एक फाइल सिस्टम लगाया गया है संभाल नहीं है rbind है के बाद सेट अप। यही कारण है, मैं इस तरह एक पर्वत है लगता है:

/something 

तो मैं के रूप में ऊपर मेरी rbind स्थापना की, और तो मैं /something/underneath/that माउंट: rbind जादुई नई rbind स्थान के माध्यम से दिखाई माउंट नहीं होगा। यह भी ध्यान रखें कि स्पष्ट रूप से कर्नेल में एक बग के कारण, आप rbind माउंट को अनमाउंट नहीं कर सकते हैं।

इसके अलावा, अगर आप का मतलब है "मैं माउंट (2) सिस्टम कॉल का उपयोग कर बाँध माउंट सेट करूं?": जब आप एक नियमित bind माउंट के लिए mount(2) फोन आप MS_BIND ध्वज (mount.h में परिभाषित) का उल्लेख करना होगा । rbind माउंट के लिए, आपको MS_BIND और अनूद दस्तावेज़ MS_REC ध्वज निर्दिष्ट करना होगा (linux/fs.h में परिभाषित)।

आशा है कि मदद करता है,

एरिक Melski

-1
mount /path/to/device /path/to/mount/location -o loop 

जहां/path/to/उपकरण या तो विभाजन आप माउंट करने के लिए चाहते हैं, या एक डिस्क छवि के लिए पथ, और/पथ के लिए पथ है/to/माउंट/स्थान फ़ोल्डर आप के लिए पथ है

mount /path/to/device /path/to/mount/location -o loop -t vfat 
1

ऐसा लगता है कि सभी उत्तर अब तक लूपबैक उपकरणों पर बढ़ते है, और नहीं एक पाश bind mounts का उपयोग कर बनाने के बारे में कर रहे हैं।

आप शायद की खोज की है के रूप में,

$ mkdir -p test/test 
$ mount --bind test test/test 

केवल आप test/test/test तक पहुँचने के लिए, और आगे कोई अनुमति देता है। भी नहीं

$ mount --rbind test test/test 

काम करता है, पुनरावर्ती बाँध-माउंट प्रभावी रूप से स्रोत पर मौजूदा माउंट खोजने और उन्हें लक्ष्य में बाध्यकारी माध्यम से चला जाता है।

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

-1

आप बिल्कुल शुरू से एक बनाने के लिए चाहते हो सकता है:

पहले छवि फ़ाइल बना सकते हैं और प्रारंभ में यह

dd if=/dev/zero of=/tmp/loop.img bs=1024k count=$IMG_SIZE 

इसके बाद, यह एक वैध विभाजन आपकी पसंद के किसी एफएस प्रकार का उपयोग कर

mkfs.ext3 -F /tmp/loop.img 

माउंट अपनी नई छवि

mkdir -p /mnt/image 
mount /tmp/loop.img /mnt/image -o loop 

अब आप अपनी नई छवि में फ़ाइलों और निर्देशिकाओं को बना/कॉपी कर सकते हैं।

मज़े करें,

जीच!

+0

यह ... प्रश्न का उत्तर नहीं देता है ... – hintss

संबंधित मुद्दे