Sự khác biệt giữa:
ln -s /mnt/extra/home /
và
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
đã là một thư mục gắn kết
Sự khác biệt giữa:
ln -s /mnt/extra/home /
và
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
đã là một thư mục gắn kết
Câu trả lời:
mount --rbind
là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/home
cũ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 -s
giải pháp và mount --rbind
giải pháp là với ln -s
/home
một liên kết tượng trưng trong khi với mount --rbind
nó 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 -s
sẽ thất bại nếu /home
tồn tại, trong khi mount --rbind
sẽ 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 -s
cần một hệ thống tệp có thể ghi để tạo liên kết tượng trưng.
ln -s
sửa đổi hệ thống tập tin, trong khi mount --rbind
khô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 đó.
--bind
và --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
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).
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 --rbind
hà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ư vsftpd
mụ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ì vsftpd
bạ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 ở đó.
ln
tạo liên kết; đặc biệt,ln -s
làm cho các liên kết tượng trưng.mount
gắn kết một hệ thống tập tin vào một thư mục. Họ không có gì chung.