ความแตกต่างระหว่าง:
ln -s /mnt/extra/home /
และ
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
เป็นไดเรกทอรีที่เมาท์อยู่แล้ว
ความแตกต่างระหว่าง:
ln -s /mnt/extra/home /
และ
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
เป็นไดเรกทอรีที่เมาท์อยู่แล้ว
คำตอบ:
mount --rbind
ทำ burs-mount แบบเรียกซ้ำ นั่นคือลำดับชั้นของระบบแฟ้มติดตั้งอยู่บนยังจะสามารถเข้าถึงได้ผ่านทาง/mnt/extra/home
/home
ในทางปฏิบัติความแตกต่างที่สำคัญระหว่างการln -s
แก้ปัญหาและการmount --rbind
แก้ปัญหาคือการที่มีln -s
/home
symlink ในขณะที่mount --rbind
มันเป็นไดเรกทอรี นี้มีผลต่อเครื่องมือเช่นfind
, df
, test
/ [
ฯลฯ
นอกจากนี้ln -s
จะล้มเหลวหาก/home
มีอยู่ในขณะที่mount --rbind
จะล้มเหลวหากไม่มีอยู่หรือไม่ใช่ไดเรกทอรีว่างเปล่า
ความคิดเห็นของ Mark ด้านล่างมีความสำคัญเช่นกัน: ln -s
ต้องการระบบไฟล์ที่เขียนได้เพื่อสร้าง symlink
ln -s
ปรับเปลี่ยนระบบแฟ้มในขณะที่mount --rbind
ไม่ ซึ่งหมายความว่าคุณสามารถติดตั้งโฮมไดเร็กตอรี่บนรูทแบบอ่านอย่างเดียว (เช่นซีดีบูต) แต่คุณไม่สามารถสร้างลิงก์สัญลักษณ์ได้
--bind
และ--rbind
ไม่ต้องสนใจว่าไดเรกทอรีเป้าหมายของฉันว่างเปล่าหรือไม่พวกเขาเพียงแค่เมา "ด้านบน" ของไฟล์อะไรก็ตามที่มีอยู่ทำให้ไม่สามารถเข้าถึงได้
ในกรณีนี้ทั้งการเชื่อมโยงเชื่อมโยงและลิงก์สัญลักษณ์จะทำงานคล้ายกันเพื่อจุดประสงค์ส่วนใหญ่ แต่มีความแตกต่างที่สำคัญ
ลิงก์สัญลักษณ์มีน้ำหนักเบากว่าเล็กน้อย คุณสามารถมีลิงค์สัญลักษณ์เป็นร้อยหรือพันลิงค์โดยไม่มีปัญหาด้านการจัดการ พวกเขานั่งอยู่ในระบบแฟ้มแทนที่จะต้องตั้งค่าระดับระบบพิเศษ
ลิงก์สัญลักษณ์สามารถสำรองและคัดลอกอย่างถูกต้องโดยเครื่องมือเช่น cp และ rsync นั่นคือเครื่องมือสามารถรับรู้และคัดลอกลิงก์สัญลักษณ์เพื่อให้แน่ใจว่าในการคืนค่าที่อื่นลิงก์จะถูกกู้คืนและชี้ไปยังปลายทางที่ถูกต้อง ทุกอย่างจะทำงาน "ถูกต้อง" โดยค่าเริ่มต้น ในทางตรงกันข้ามเมื่อทำการสำรองหรือคัดลอกการผูกการเชื่อมต่อการเมาท์จะถูกดำเนินการอย่างโปร่งใสทำให้ตัวไฟล์ถูกคัดลอกซึ่งอาจนำไปสู่การทำสำเนาหากคุณได้รับไฟล์เดียวกันในตำแหน่งอื่นและต้องการงานพิเศษหากคุณต้องการ เพื่อทำซ้ำการเชื่อมต่อที่ปลายทาง
ลิงก์สัญลักษณ์สามารถแก้ไขหรือลบได้โดยผู้ใช้ที่มีสิทธิ์เข้าถึงลิงก์ดังนั้นจึงเป็นเรื่องง่ายที่จะทำให้เป็น superuser เท่านั้นหรือเปิดให้กับผู้ใช้รายใดรายหนึ่งโดยเฉพาะ Bind mounts สามารถตั้งค่าหรือแก้ไขได้โดย superuser เท่านั้น
หากสิ่งนี้ฟังดูเหมือนเป็นการรับรองการเชื่อมโยงสัญลักษณ์ที่เปล่งประกายก็เป็นได้ นี่เป็นวิธีที่ง่ายกว่าในการเชื่อมโยงระหว่างไฟล์และไดเรกทอรี คุณจะใช้ bind mounts เฉพาะในกรณีที่ลิงก์สัญลักษณ์ไม่ทำงานซึ่งอาจมีสถานการณ์น้อยกว่าที่คุณคิด เครื่องมือส่วนใหญ่รวมถึงเครื่องมือสำรองข้อมูลและซิงค์มีพฤติกรรมเริ่มต้นที่เหมาะสมสำหรับลิงก์สัญลักษณ์และการจัดการลิงก์สัญลักษณ์อาจกำหนดค่าได้ Bind mounts นั้นโปร่งใสสำหรับเครื่องมือดังกล่าวดังนั้นคุณจึงสูญเสียความยืดหยุ่นนั้นและอาจสูญเสียพฤติกรรมที่เหมาะสม
ความแตกต่างอีกอย่างหนึ่งคือลิงก์สัญลักษณ์เป็นสัญลักษณ์กล่าวคือเป็นการอ้างอิงเส้นทาง - สตริงของอักขระและจะถูกปฏิเสธทุกครั้งที่คุณเปิดไดเรกทอรีย่อย / ไฟล์ในเส้นทางเป้าหมาย ในทางกลับกันmount --rbind
จะทำงานเหมือนลิงก์ที่ยากกว่าซึ่งจะไม่ได้รับการประเมินเส้นทางซ้ำอีกครั้งในแต่ละครั้ง
chroot
นี้จะทำให้ความแตกต่างในบางสถานการณ์เช่น เช่นvsftpd chroot
s ในโฮมไดเร็กทอรีของบัญชีผู้ใช้ FTP ที่คุณลงชื่อเข้าใช้ดังนั้นหากคุณใส่ symlink ลงในไดเรกทอรีนั้นvsftpd
จะไม่สามารถทำการตรวจสอบซ้ำได้และเป้าหมายจะไม่สามารถเข้าถึงได้ผ่าน FTP หากคุณทำเช่นmount --rbind
นั้นคุณvsftpd
จะเข้าถึงทรีย่อยนั้นราวกับว่าอยู่ที่นั่นจริงๆเช่นเดียวกับเมื่อคุณเชื่อมโยงไฟล์ที่นั่นอย่างหนัก
ln
สร้างลิงก์ โดยเฉพาะln -s
สร้างลิงก์สัญลักษณ์mount
เมาท์ระบบไฟล์ลงในไดเรกทอรี พวกเขาไม่มีอะไรเหมือนกัน