Linux ทำอะไรกับไฟล์ที่มีอยู่ในจุดเมานท์?


52

หากฉันพยายามเมานต์โฟลเดอร์ที่มีไฟล์อยู่แล้ว linux จะให้ข้อความแสดงข้อผิดพลาดหรือไม่และแสดงทั้งระบบไฟล์ที่เมาท์และไฟล์ที่อยู่ในโฟลเดอร์แล้วหรือไม่?


2
ลองใช้กับไฟล์ทดสอบบางไฟล์ได้หรือไม่?
คริส

ฉันจะถ้าฉันสามารถ เป็นเพียงผลงานที่ฉันไม่มีอะไรจะทดสอบด้วย ฉันลองยกเลิกการต่อเชื่อมและติดตั้งไดรฟ์ที่มีปัญหา แต่ผลลัพธ์ไม่สามารถสรุปได้เพราะทั้งคู่มีไฟล์เดียวกัน
บาง

มีวิธีทำให้โฟลเดอร์ไม่สามารถเขียนทับได้หรือไม่เพื่อให้ไฟล์ไม่มีอยู่?
endolith

คำตอบ:


33

มันจะถูกเมาต์และไฟล์จะหายไปกลับมาเมื่อโฟลเดอร์ถูกต่อเชื่อม


1
คุณหมายถึงอะไรโดยหายไป? พวกเขายังคงอยู่บนเซิร์ฟเวอร์และจะไม่แสดงหรือถูกลบไป?
ผอม

ฉันจะไปตรวจสอบอย่างรวดเร็ว แต่ฉันคิดว่ามันถูกลบไปแล้ว
Azz

17
+1 ไฟล์จะมองไม่เห็นในขณะที่ไดเรกทอรีถูกเมาท์ "มากกว่า" พวกเขาไม่เคยหายไปไหนจริง ๆ ที่เข้าถึงไม่ได้ ...
sleske

10
มันทำงานเหมือนสแต็คถ้าคุณติดอย่างอื่นมันจะซ่อนเนื้อหาก่อนหน้า เมื่อคุณเลิกเมานท์สิ่งก่อนหน้านี้จะมองเห็นได้อีกครั้ง
vtest

4
ฉันสับสนว่าผู้ที่พูดว่า "กลับมาเมื่อถอนการติดตั้งโฟลเดอร์" สามารถพูดได้ 3 นาทีต่อมา "ฉันคิดว่าพวกเขาถูกลบ" ขอบคุณสำหรับคนอื่น ๆ อดีตคือความจริงที่นี่
underscore_d

111

เมื่อคุณเมานต์ระบบไฟล์ในไดเรกทอรี/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

5
Gilles คำตอบนี้ช่วยชีวิตฉันเมื่อฉันต้องการบันทึกดอกจันที่ได้รับการบันทึกภายใต้จุดเมานท์ NSF! ฉันคิดเสมอ - ผูกมีมุมมองเช่นเดียวกับผู้ใช้ ขอขอบคุณ!
andyortlieb

สิ่งที่เกี่ยวกับไดเรกทอรี? หากฉันติดตั้ง/mount-point/1/แล้วจากนั้นติดตั้งระบบไฟล์อื่น/mount-point/ฉันจะยังสามารถเข้าถึงได้/mount-point/1/หรือไม่
CMCDragonkai

@CMCDragonkai ใช่โดยอ้อมโดยใช้การผูกติดดังที่อธิบายไว้ในคำตอบของฉัน
Gilles 'หยุดชั่วร้าย'

ไจล์สนี่เป็นเทคนิคที่ยอดเยี่ยมและช่วยให้ฉันวิเคราะห์สิ่งที่อยู่ในระบบของฉันเอง มันยังช่วยด้วยคำถามอื่นซึ่งเป็นวิธีการตรวจสอบการใช้งานของไดเรกทอรีรากทั้งหมดโดยไม่ผ่านจุดเชื่อมต่อ mkdir /r; mount --bind / /r; du -sh /r/*การแก้ไข: ขอบคุณ
Manngo

@ Mango สำหรับการอ้างอิงในอนาคตนี้ไม่จำเป็น du -x(เทียบเท่าdu --one-file-system) จะทำเช่นนั้นโดยไม่จำเป็นต้องมี--bindshenanigans
Darael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.