ฉันพยายามที่จะบรรลุสิ่งที่คล้ายกัน แต่คำตอบของ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
แต่เพียงมีความคิดที่ซับซ้อนที่แน่ใจว่าจะพังเมื่อฉันต้องการมัน สิ่งนี้ทำในสิ่งที่ฉันต้องการอย่างแน่นอนและยังสามารถติดตั้งแบบถาวรได้อีกด้วย ขอบคุณ