หากฉันพยายามเมานต์โฟลเดอร์ที่มีไฟล์อยู่แล้ว linux จะให้ข้อความแสดงข้อผิดพลาดหรือไม่และแสดงทั้งระบบไฟล์ที่เมาท์และไฟล์ที่อยู่ในโฟลเดอร์แล้วหรือไม่?
หากฉันพยายามเมานต์โฟลเดอร์ที่มีไฟล์อยู่แล้ว linux จะให้ข้อความแสดงข้อผิดพลาดหรือไม่และแสดงทั้งระบบไฟล์ที่เมาท์และไฟล์ที่อยู่ในโฟลเดอร์แล้วหรือไม่?
คำตอบ:
มันจะถูกเมาต์และไฟล์จะหายไปกลับมาเมื่อโฟลเดอร์ถูกต่อเชื่อม
เมื่อคุณเมานต์ระบบไฟล์ในไดเรกทอรี/mount-point
คุณจะไม่สามารถเข้าถึงไฟล์/mount-point
ได้โดยตรง ยังคงมีอยู่ แต่/mount-point
ตอนนี้อ้างถึงรูทของระบบไฟล์ที่เมาท์ไม่ใช่ไดเร็กทอรีที่ทำหน้าที่เป็นจุดต่อดังนั้นเนื้อหาของไดเรกทอรีนี้ไม่สามารถเข้าถึงได้อย่างน้อยก็ด้วยวิธีนี้ ตัวอย่างเช่น:
# touch /mount-point/somefile
# ls /mount-point/somefile
/mount-point/somefile
# mount /dev/something /mount-point
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
มีวิธีรับมุมมองแบบผสานของระบบไฟล์ที่เมาท์และข้อมูลที่มีอยู่แล้ว แต่คุณต้องการเลเยอร์เพิ่มเติมที่เรียกว่าระบบไฟล์แบบร่วม
ภายใต้ Linux มีวิธีดูไฟล์ที่ซ่อนอยู่ คุณสามารถใช้mount --bind
เพื่อรับมุมมองอื่นของระบบไฟล์ที่จุดเชื่อมต่ออยู่ ตัวอย่างเช่น
mount --bind / /other-root-view
/other-root-view
คุณจะเห็นไฟล์ทั้งหมดในระบบแฟ้มรากภายใต้
# cat /other-root-view/etc/hostname
darkstar
โดยเฉพาะอย่างยิ่ง/mount-point
ตอนนี้จะสามารถเข้าถึงได้ในฐานะ/other-root-view/mount-point
และเนื่องจาก/other-root-view/mount-point
ไม่ใช่จุดเชื่อมต่อคุณจึงสามารถดูเนื้อหาได้ที่:
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
# ls /other-root-view/mount-point/somefile
/other-root-view/mount-point/somefile
/mount-point/1/
แล้วจากนั้นติดตั้งระบบไฟล์อื่น/mount-point/
ฉันจะยังสามารถเข้าถึงได้/mount-point/1/
หรือไม่
mkdir /r; mount --bind / /r; du -sh /r/*
การแก้ไข: ขอบคุณ
du -x
(เทียบเท่าdu --one-file-system
) จะทำเช่นนั้นโดยไม่จำเป็นต้องมี--bind
shenanigans