आरोह बिंदु की मूल सामग्री तक पहुँच


32

मेरे बिना सिर पर NAS मेरे पास है sdf1(एक फ्लैश कार्ड) घुड़सवार के रूप में /, जबकि /homeसे रखा जाता है lv00(एक एलवीएम मात्रा द्वारा एक सॉफ्टवेयर RAID समर्थित)। RAID विफल होने पर मशीन तक पहुंचने में सक्षम होने के लिए, मेरे पास /home/foo/.sshफ़ाइल-सिस्टम पर मेरी ssh सार्वजनिक कुंजी आदि की एक प्रति है sdf1
फ़ाइलों को घुड़सवार द्वारा छिपे हुए हैं अद्यतन करने के लिए /homeमैं सामान्य रूप से रिमाउंट lv00में /mnt/home, मुझे क्या करना है, और फिर आगे बढ़ना है क्या करना lv00जगह में वापस।
क्या बिना सोचे-समझे इसे हासिल करने का कोई तरीका है /home?

जवाबों:


44
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

जब तक आप उपयोग करते हैं --bind(जैसा कि विरोध किया जाता है --rbind), आपको इसके ऊपर माउंट किए गए सामान के बिना माउंट का क्लोन मिलता है।


उत्तम! मैं इस विचार के साथ कर रहा था mount --bind, लेकिन केवल कुछ दृढ़ विचारों को मिला जो मुझे ज़रूरत पड़ने पर टूटने के लिए सुनिश्चित थे। यह वही है जो मुझे चाहिए और यहां तक ​​कि एक स्थायी माउंट के रूप में भी जा सकता है। धन्यवाद
जानूस


क्या इस उत्तर को संपादित करना इस तथ्य को शामिल करने के लायक है कि आपको उस निर्देशिका से ऊपर के स्तर को बांधना होगा जिसे आपने माउंट के साथ कवर किया है, जैसा कि अन्य उत्तर में कवर किया गया है? यह उत्तर अन्यथा बेहतर है, क्योंकि यह छोटा है और इसलिए जल्दी से पढ़ना आसान है!
माइकल फर्थ

5

मैंने कुछ इसी तरह हासिल करने की कोशिश की है, लेकिन एपेमिएंट का जवाब विधि के शब्दार्थ को स्पष्ट नहीं करता है। यह मेरे लिए विफल रहा और इसलिए मैंने वस्तुतः यही प्रश्न पहले यहाँ unix.SE पर पूछा। एक टिप्पणी के बाद मैंने इसे स्वयं ही समझ लिया और इसका उत्तर दिया। इस संदर्भ में फिट होने के लिए यह मेरे उत्तर का एक संपादित संस्करण है। मैंने इस के पक्ष में अपने अन्य प्रश्न (और उत्तर) को हटा दिया।

यहाँ मैं क्या करने की कोशिश कर रहा था:

उदाहरण का मामला

माउंट:

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

बढ़ते के बाद /मेरे पास /home/joeउपयोगकर्ता के लिए एक फ़ोल्डर है joe। एक बार जब अन्य स्थान माउंट हो जाता है ( /data) मेरे पास उपलब्ध होम फ़ोल्डर्स का पूरा सेट है, तो मैं उन्हें जगह में बाँध रहा हूं ( /data/home on /home)। एक फ़ोल्डर है /data/home/joe, इसलिए जब तक /dev/sdb1सफल होने की माउंटिंग है , वह सामग्री प्राप्त कर लेगा /data/home/joe, अन्यथा वह वापस /home/joe(ऑन /dev/sda1!) आएगा ।

जब यह सफल हो जाता है, तो मैं उन बाइंड-माउंट की जगह की मूल सामग्री /home/joe( एक्सेस) को कैसे एक्सेस कर सकता हूं ?/dev/sda1/data/home/joe

समाधान

मेरे प्रश्न पर पैट्रिक की टिप्पणी के आधार पर और मेरे द्वारा किए गए समाधान के बारे में टिप्पणी (यहाँ उत्तर स्वीकार किए जाते हैं), मैं निम्नलिखित के साथ आया हूं।

यह है करने के लिए संभव जाहिरा तौर पर mount --bind(या mount -o bind) मूल फ़ोल्डर ( इस महत्वपूर्ण हिस्सा है ) एक की कहीं और बाँध माउंट और इस तरह मूल सामग्री का उपयोग। मेरे उदाहरण के मामले में, इसके बजाय:

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(यानी पहले से ही बंधे हुए स्थानों को माउंट करें)

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

तो यह पैट्रिक ने अपनी टिप्पणी में क्या मतलब है

जब तक आप अधिक remounting रहे हैं /(रूट), कि इस सवाल का जवाब ठीक काम करना चाहिए।

जब तक आपके पास बाइंड-माउंटेड स्थान के लिए एक पैरेंट फ़ोल्डर उपलब्ध है, यह ऊपर दिखाए गए अनुसार एक अप्रत्यक्ष के साथ काम करेगा। यदि आप कुछ ऐसा /कर रहे हैं जिससे आप भाग्य से बाहर हैं, क्योंकि कोई भी पैरेंट फोल्डर नहीं है /


मूल फ़ोल्डर को माउंट करना महत्वपूर्ण हिस्सा था जो मुझे याद आ रहा था। धन्यवाद।
असिस्टन

1

आप इसका उपयोग किए बिना माउंट को एक नए स्थान पर ले जा सकते हैं mount --move:

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home

1
धन्यवाद माइकल। यह अन्य उपयोगकर्ताओं के लिए दुर्गम / घर बनाने का समान नुकसान है।
जानूस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.