ความแตกต่างระหว่าง ln -s และ mount --rbind คืออะไร?


8

ความแตกต่างระหว่าง:

ln -s /mnt/extra/home /

และ

mkdir /home
mount --rbind /mnt/extra/home /home

1
lnสร้างลิงก์ โดยเฉพาะln -sสร้างลิงก์สัญลักษณ์ mountเมาท์ระบบไฟล์ลงในไดเรกทอรี พวกเขาไม่มีอะไรเหมือนกัน
AlexP

แต่mount --rbind /mnt/extra/homeเป็นไดเรกทอรีที่เมาท์อยู่แล้ว
NerdOfLinux

ใส่ที่เป็นคำตอบและผมจะทำเครื่องหมายคำถามนี้เป็นแก้ไข :)
NerdOfLinux

คำตอบ:


13

mount --rbindทำ burs-mount แบบเรียกซ้ำ นั่นคือลำดับชั้นของระบบแฟ้มติดตั้งอยู่บนยังจะสามารถเข้าถึงได้ผ่านทาง/mnt/extra/home/home

ในทางปฏิบัติความแตกต่างที่สำคัญระหว่างการln -sแก้ปัญหาและการmount --rbindแก้ปัญหาคือการที่มีln -s /homesymlink ในขณะที่mount --rbindมันเป็นไดเรกทอรี นี้มีผลต่อเครื่องมือเช่นfind, df, test/ [ฯลฯ

นอกจากนี้ln -sจะล้มเหลวหาก/homeมีอยู่ในขณะที่mount --rbindจะล้มเหลวหากไม่มีอยู่หรือไม่ใช่ไดเรกทอรีว่างเปล่า

ความคิดเห็นของ Mark ด้านล่างมีความสำคัญเช่นกัน: ln -sต้องการระบบไฟล์ที่เขียนได้เพื่อสร้าง symlink


7
ความแตกต่างใหญ่คือการln -sปรับเปลี่ยนระบบแฟ้มในขณะที่mount --rbindไม่ ซึ่งหมายความว่าคุณสามารถติดตั้งโฮมไดเร็กตอรี่บนรูทแบบอ่านอย่างเดียว (เช่นซีดีบูต) แต่คุณไม่สามารถสร้างลิงก์สัญลักษณ์ได้
ทำเครื่องหมาย

3
--bindและ--rbindไม่ต้องสนใจว่าไดเรกทอรีเป้าหมายของฉันว่างเปล่าหรือไม่พวกเขาเพียงแค่เมา "ด้านบน" ของไฟล์อะไรก็ตามที่มีอยู่ทำให้ไม่สามารถเข้าถึงได้
Xen2050

7

ในกรณีนี้ทั้งการเชื่อมโยงเชื่อมโยงและลิงก์สัญลักษณ์จะทำงานคล้ายกันเพื่อจุดประสงค์ส่วนใหญ่ แต่มีความแตกต่างที่สำคัญ

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

ลิงก์สัญลักษณ์สามารถสำรองและคัดลอกอย่างถูกต้องโดยเครื่องมือเช่น cp และ rsync นั่นคือเครื่องมือสามารถรับรู้และคัดลอกลิงก์สัญลักษณ์เพื่อให้แน่ใจว่าในการคืนค่าที่อื่นลิงก์จะถูกกู้คืนและชี้ไปยังปลายทางที่ถูกต้อง ทุกอย่างจะทำงาน "ถูกต้อง" โดยค่าเริ่มต้น ในทางตรงกันข้ามเมื่อทำการสำรองหรือคัดลอกการผูกการเชื่อมต่อการเมาท์จะถูกดำเนินการอย่างโปร่งใสทำให้ตัวไฟล์ถูกคัดลอกซึ่งอาจนำไปสู่การทำสำเนาหากคุณได้รับไฟล์เดียวกันในตำแหน่งอื่นและต้องการงานพิเศษหากคุณต้องการ เพื่อทำซ้ำการเชื่อมต่อที่ปลายทาง

ลิงก์สัญลักษณ์สามารถแก้ไขหรือลบได้โดยผู้ใช้ที่มีสิทธิ์เข้าถึงลิงก์ดังนั้นจึงเป็นเรื่องง่ายที่จะทำให้เป็น superuser เท่านั้นหรือเปิดให้กับผู้ใช้รายใดรายหนึ่งโดยเฉพาะ Bind mounts สามารถตั้งค่าหรือแก้ไขได้โดย superuser เท่านั้น

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


0

ความแตกต่างอีกอย่างหนึ่งคือลิงก์สัญลักษณ์เป็นสัญลักษณ์กล่าวคือเป็นการอ้างอิงเส้นทาง - สตริงของอักขระและจะถูกปฏิเสธทุกครั้งที่คุณเปิดไดเรกทอรีย่อย / ไฟล์ในเส้นทางเป้าหมาย ในทางกลับกันmount --rbindจะทำงานเหมือนลิงก์ที่ยากกว่าซึ่งจะไม่ได้รับการประเมินเส้นทางซ้ำอีกครั้งในแต่ละครั้ง

chrootนี้จะทำให้ความแตกต่างในบางสถานการณ์เช่น เช่นvsftpd chroot s ในโฮมไดเร็กทอรีของบัญชีผู้ใช้ FTP ที่คุณลงชื่อเข้าใช้ดังนั้นหากคุณใส่ symlink ลงในไดเรกทอรีนั้นvsftpdจะไม่สามารถทำการตรวจสอบซ้ำได้และเป้าหมายจะไม่สามารถเข้าถึงได้ผ่าน FTP หากคุณทำเช่นmount --rbindนั้นคุณvsftpdจะเข้าถึงทรีย่อยนั้นราวกับว่าอยู่ที่นั่นจริงๆเช่นเดียวกับเมื่อคุณเชื่อมโยงไฟล์ที่นั่นอย่างหนัก

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