Sự khác biệt giữa ln -s và mount --rbind là gì?


8

Sự khác biệt giữa:

ln -s /mnt/extra/home /

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

1
lntạo liên kết; đặc biệt, ln -slàm cho các liên kết tượng trưng. mountgắn kết một hệ thống tập tin vào một thư mục. Họ không có gì chung.
AlexP

Nhưng mount --rbind /mnt/extra/homeđã là một thư mục gắn kết
NerdOfLinux

Đặt câu hỏi đó làm câu trả lời và tôi sẽ đánh dấu câu hỏi này là đã được giải quyết :)
NerdOfLinux

Câu trả lời:


13

mount --rbindlàm cho một ràng buộc gắn kết đệ quy; đó là, hệ thống phân cấp hệ thống tập tin được gắn trên /mnt/extra/homecũng sẽ có thể truy cập thông qua /home.

Trong thực tế, sự khác biệt lớn giữa ln -sgiải pháp và mount --rbindgiải pháp là với ln -s /homemột liên kết tượng trưng trong khi với mount --rbindnó là một thư mục; điều này ảnh hưởng các công cụ như find, df, test/ [, vv

Ngoài ra, ln -ssẽ thất bại nếu /hometồn tại, trong khi mount --rbindsẽ thất bại nếu nó không tồn tại, hoặc nó không phải là một thư mục trống.

Nhận xét của Mark dưới đây cũng rất quan trọng: ln -scần một hệ thống tệp có thể ghi để tạo liên kết tượng trưng.


7
Sự khác biệt lớn là ln -ssửa đổi hệ thống tập tin, trong khi mount --rbindkhông. Điều này có nghĩa là bạn có thể gắn thư mục chính vào thư mục gốc chỉ đọc (ví dụ: CD khởi động), nhưng bạn không thể tạo liên kết tượng trưng trên đó.
Đánh dấu

3
--bind--rbindđừng quan tâm xem các thư mục đích của tôi có trống không, chúng chỉ gắn "trên đầu" bất kỳ tệp nào ở đó, khiến chúng không thể truy cập được
Xen2050

7

Trong trường hợp này, cả liên kết gắn kết và liên kết tượng trưng sẽ hoạt động tương tự cho hầu hết các mục đích, nhưng chúng có những khác biệt quan trọng.

Một liên kết tượng trưng là một chút nhẹ hơn. Bạn có thể có hàng trăm hoặc hàng ngàn liên kết tượng trưng mà không gặp nhiều vấn đề về quản lý. Họ ngồi trong hệ thống tập tin thay vì yêu cầu thiết lập cấp hệ thống đặc biệt.

Liên kết tượng trưng có thể được sao lưu và sao chép chính xác bằng các công cụ như cp và rsync. Nghĩa là, các công cụ có thể nhận ra và sao chép liên kết tượng trưng, ​​đảm bảo rằng khi khôi phục ở một nơi khác, liên kết được khôi phục và trỏ đến đích chính xác. Tất cả sẽ hoạt động "chính xác" theo mặc định. Ngược lại, khi sao lưu hoặc sao chép mount mount, mount sẽ được xử lý trong suốt, khiến cho các tệp bị sao chép, điều này có thể dẫn đến trùng lặp nếu bạn cũng nhận được cùng một tệp ở vị trí khác của chúng và yêu cầu làm thêm nếu bạn muốn để nhân rộng gắn kết tại điểm đến.

Liên kết tượng trưng có thể được sửa đổi hoặc xóa bởi bất kỳ người dùng nào có quyền truy cập vào liên kết, do đó, thật dễ dàng để làm cho nó chỉ siêu người dùng hoặc mở nó cho một người dùng cụ thể. Gắn kết chỉ có thể được thiết lập hoặc sửa đổi bởi siêu người dùng.

Nếu điều này nghe giống như một sự chứng thực phát sáng của các liên kết tượng trưng, ​​thì nó là. Chúng là một cách liên kết đơn giản hơn giữa các tệp và thư mục. Bạn sẽ chỉ sử dụng gắn kết liên kết cho các tình huống trong đó một liên kết tượng trưng sẽ không hoạt động, có thể ít tình huống hơn bạn nghĩ. Hầu hết các công cụ, bao gồm các công cụ sao lưu và đồng bộ hóa, có hành vi mặc định hợp lý cho các liên kết tượng trưng và việc xử lý các liên kết tượng trưng của chúng có thể được cấu hình. Gắn kết ràng buộc trong suốt với các công cụ như vậy để bạn mất tính linh hoạt đó và có thể mất hành vi hợp lý (ví dụ như đã đề cập ở trên, sao chép các thư mục trong bản sao lưu của bạn).


0

Một điểm khác biệt nữa là liên kết tượng trưng là biểu tượng , tức là nó chỉ tham chiếu một đường dẫn - một chuỗi các ký tự và nó được quy định lại mỗi khi bạn mở một thư mục con / tệp trong đường dẫn đích. Ngược lại, mount --rbindhành xử giống như một liên kết cứng, mà đường dẫn không được đánh giá lại theo từng điều kiện.

Điều này làm cho một sự khác biệt trong một số kịch bản như chroot. Ví dụ: vsftpd chroot vào thư mục chính của tài khoản người dùng FTP mà bạn đăng nhập. Do đó, nếu bạn đặt một liên kết tượng trưng vào thư vsftpdmục đó, bạn sẽ không thể truy cập nó và do đó mục tiêu sẽ không thể truy cập được qua FTP. Nếu bạn thay vào đó mount --rbind, thì vsftpdbạn sẽ chỉ truy cập vào cây con đó như thể nó thực sự ở đó, tương tự như khi bạn liên kết cứng một tệp ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.