Linux làm gì với các tệp hiện có trong một điểm gắn kết?


52

Nếu tôi cố gắn một thư mục đã có tệp trong đó, linux có cung cấp cho tôi thông báo lỗi hay tiếp tục và hiển thị cả hệ thống tệp được gắn và các tệp đã có trong thư mục?


2
Luôn luôn có thể thử nó với một số tập tin thử nghiệm, phải không?
Chris

Tôi sẽ làm nếu tôi có thể. Nó chỉ làm việc mà tôi không có gì để kiểm tra. Tôi đã thử ngắt kết nối và gắn ổ đĩa vào câu hỏi nhưng kết quả không thuyết phục vì cả hai đều có cùng một tệp.
mỏng

Có cách nào để làm cho thư mục không thể đọc được để các tập tin không thể tồn tại ở đó không?
endolith

Câu trả lời:


33

Nó sẽ chỉ được gắn kết và các tập tin biến mất, quay trở lại khi thư mục bị xóa.


1
Bạn có ý nghĩa gì khi biến mất? Chúng tiếp tục tồn tại trên máy chủ và chỉ không được hiển thị hoặc bị xóa?
mỏng

Tôi sẽ đi kiểm tra nhanh, nhưng tôi nghĩ chúng đã bị xóa.
Azz

17
+1 Các tập tin chỉ đơn giản là vô hình trong khi thư mục được gắn "trên" chúng. Họ không bao giờ thực sự ra đi, chỉ là không thể truy cập ...
sleske

10
Nó hoạt động giống như một ngăn xếp, nếu bạn gắn kết một cái gì đó khác, nó sẽ ẩn nội dung trước đó. Khi bạn ngắt kết nối, các công cụ trước đó sẽ hiển thị lại.
vtest

4
Tôi bối rối bởi cách một người nói "quay lại khi thư mục không được đếm" đã có thể nói 3 phút sau "Tôi nghĩ rằng họ đã bị xóa". Rất may cho những người khác, trước đây là thực tế ở đây.
undererscore_d

111

Khi bạn gắn một hệ thống tệp trên một thư mục /mount-point, bạn không thể truy cập các tệp theo /mount-pointtrực tiếp nữa. Chúng vẫn tồn tại, nhưng /mount-pointbây giờ đề cập đến thư mục gốc của hệ thống tập tin được gắn kết, không phải là thư mục được dùng làm điểm gắn kết, vì vậy, nội dung của thư mục này không thể được truy cập, ít nhất là theo cách này. Ví dụ:

# touch /mount-point/somefile
# ls /mount-point/somefile
/mount-point/somefile
# mount /dev/something /mount-point
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory

Có nhiều cách để có được chế độ xem hợp nhất của hệ thống tệp được gắn và dữ liệu đã có, nhưng bạn cần một lớp bổ sung gọi là hệ thống tệp kết hợp .

Trong Linux, có một cách để xem các tệp ẩn. Bạn có thể sử dụng mount --bindđể có được một cái nhìn khác về hệ thống tập tin có điểm gắn kết. Ví dụ

mount --bind / /other-root-view

Bạn sẽ thấy tất cả các tệp trong hệ thống tập tin gốc bên dưới /other-root-view.

# cat /other-root-view/etc/hostname 
darkstar

Cụ thể, /mount-pointbây giờ sẽ có thể truy cập được /other-root-view/mount-pointvà vì /other-root-view/mount-pointkhông phải là điểm gắn kết, bạn có thể thấy nội dung của nó ở đó:

# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
# ls /other-root-view/mount-point/somefile
/other-root-view/mount-point/somefile

5
Gilles, câu trả lời này chỉ lưu lại mông tôi khi tôi cần lấy một số bản ghi hoa thị đã được lưu bên dưới một điểm gắn NSF! Tôi luôn nghĩ rằng - người dùng có cùng quan điểm với người dùng. Cảm ơn bạn!
andyortlieb

Còn thư mục thì sao? Nếu tôi gắn vào /mount-point/1/sau đó gắn hệ thống tập tin khác vào /mount-point/, tôi vẫn có thể truy cập /mount-point/1/chứ?
CMCDragonkai

@CMCDragonkai Có, gián tiếp bằng cách sử dụng một liên kết gắn kết như được mô tả trong câu trả lời của tôi.
Gilles 'SO- ngừng trở nên xấu xa'

Giles, đây là một kỹ thuật tuyệt vời và đã giúp tôi phân tích những gì trên hệ thống của riêng tôi. Nó cũng đã giúp với một câu hỏi khác, đó là làm thế nào để kiểm tra việc sử dụng tất cả các thư mục gốc mà không đi qua các điểm gắn kết. Giải pháp : mkdir /r; mount --bind / /r; du -sh /r/*. Cảm ơn
Manngo

@Manngo để tham khảo trong tương lai, điều này là không cần thiết. du -x(tương đương du --one-file-system) sẽ làm điều đó mà không cần --bindshenanigans.
Darael
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.