จะสร้างลิงค์อ่านอย่างเดียวไปยังไดเรกทอรีได้อย่างไร


18

หนึ่งในสคริปต์ของฉันสร้าง symlink แบบไดนามิกดังนี้:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

ฉันจะทำให้การเข้าถึงผ่านลิงก์เป็นแบบอ่านอย่างเดียวได้อย่างไร

คำตอบ:


18

คุณสามารถสร้างแบบอ่านอย่างเดียวผูก-mount

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

ใช่ต้องดำเนินการในสองขั้นตอนในเมล็ดหลังจาก Linux เคอร์เนล 2.6.25 (ดูลิงก์ด้านบนเพื่อดูเหตุผล)

หรืออีกวิธีหนึ่งเป็น/etc/fstabตัวอย่างบรรทัดอ้างอิง :

/path/to/source/ /path/to/dest/ none bind,ro

ไม่ว่าจะด้วยวิธีใด bind mount จะอยู่ในเลเยอร์ระบบไฟล์เสมือน (VFS) ดังนั้นมันจึงไม่เจาะจงกับระบบไฟล์ใด ๆ โดยพื้นฐานแล้วนี่คือการสร้างลิงก์สัญลักษณ์ให้คุณ แต่สิ่งนี้จะไม่ปรากฏเช่นนี้

และเพื่อตอบความคิดเห็นด้านล่างเกี่ยวกับการสูญเสียข้อมูล ... ไม่คำแนะนำเหล่านี้จะไม่ลบไฟล์ใด ๆ ในกรณีที่คุณมีไฟล์อยู่บนเส้นทางปลายทางการเมานต์นี้จะอยู่เหนือสิ่งนี้ เพียงยกเลิกการต่อเชื่อมเพื่อแสดงรายการไฟล์ของคุณในพา ธ บนระบบไฟล์ที่อยู่ด้านล่าง ดียิ่งขึ้น โดยทั่วไปหลีกเลี่ยงการติดตั้งที่ด้านบนของเส้นทางปลายทางที่ไม่ว่างเปล่า


1
ระวัง. ทำตามขั้นตอนเหล่านี้และลบไดเรกทอรีข้อมูลสำรองทั้งหมดของฉันและทำให้มันไม่สามารถเขียนได้โดย daemon สำรองข้อมูลของฉัน

คุณสามารถให้บริการโซลูชั่นนี้เป็นรายการ fstab ได้หรือไม่?
Throoze

@Throoze คุณไปแล้ว;)
gertvdijk

คำสั่ง remount น่าจะเป็น: mount -o bind,remount,ro /path/to/destดูlwn.net/Articles/637501จากชุดข้อความเดียวกัน
anon

mount -o remount,ro /path/to/destให้ฉันข้อผิดพลาดต่อไปนี้: mount: mount point is busy.@gertvdijk
alper

2

การเชื่อมโยงแบบอ่านอย่างเดียวด้วยคำสั่งเดียว:

mount --bind -r /path/to/source/ /path/to/dest/

เพื่อยกเลิกการต่อเชื่อม

umount /path/to/dest/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.