ฉันพยายามที่จะบรรลุสิ่งที่คล้ายกัน แต่คำตอบของephemientไม่ได้อธิบายความหมายของวิธีการ มันล้มเหลวสำหรับฉันและฉันก็เลยถามคำถามเดียวกันก่อนหน้านี้ที่ 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อย่างไร
วิธีการแก้
จากความคิดเห็นของPatrickความคิดเห็นในคำถามของฉันและวิธีแก้ปัญหาโดย ephemient (คำตอบที่ยอมรับได้ที่นี่) ฉันมาพร้อมกับสิ่งต่อไปนี้
มันเป็นที่เห็นได้ชัดไปได้ที่จะ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
ดังนั้นนี่คือสิ่งที่ Patrick มีความหมายในความคิดเห็นของเขา
หากคุณไม่ได้ติดตั้ง/(root) คำตอบนั้นน่าจะใช้ได้
ตราบใดที่คุณมีโฟลเดอร์พาเรนต์ไปยังตำแหน่งที่เชื่อมโยงแล้วก็ใช้งานได้แม้ว่ามันจะมีทิศทางเดียวดังที่แสดงไว้ด้านบน ถ้าคุณผูกติดบางสิ่งบางอย่างมากกว่าที่คุณกำลังออกจากโชคเป็นไม่มีโฟลเดอร์หลักสำหรับ//
mount --bindแต่เพียงมีความคิดที่ซับซ้อนที่แน่ใจว่าจะพังเมื่อฉันต้องการมัน สิ่งนี้ทำในสิ่งที่ฉันต้องการอย่างแน่นอนและยังสามารถติดตั้งแบบถาวรได้อีกด้วย ขอบคุณ