Co Linux robi z istniejącymi plikami w punkcie montowania?


52

Jeśli spróbuję zamontować folder, w którym są już pliki, czy linux wyświetli komunikat o błędzie, czy też pokaże zarówno podłączony system plików, jak i pliki, które już były w folderze?


2
Zawsze można to wypróbować z niektórymi plikami testowymi, nie?
Chris

Zrobiłbym, gdybym mógł. Po prostu wyszło, że nie mam nic do przetestowania. Próbowałem odmontować i zamontować dysk, o którym mowa, ale wyniki były niejednoznaczne, ponieważ oba miały te same pliki.
szczupły

Czy istnieje sposób na uniemożliwienie zapisu folderu, aby pliki nie mogły tam istnieć?
endolith,

Odpowiedzi:


33

Zostanie po prostu zamontowany, a pliki znikną, wracając, gdy folder zostanie podłączony.


1
Co masz na myśli przez zniknięcie? Nadal istnieją na serwerze i po prostu nie są wyświetlane, czy zostały usunięte?
szczupły

Pójdę szybko sprawdzić, ale myślę, że zostały usunięte.
Azz

17
+1 Pliki są po prostu niewidoczne, gdy katalog jest montowany „nad” nimi. Nigdy tak naprawdę nie odchodzą, są po prostu niedostępne ...
sleske 18.10.10

10
Działa jak stos, jeśli zamontujesz coś innego, ukrywa poprzednią zawartość. Po odmontowaniu poprzednie elementy stają się ponownie widoczne.
vtest

4
Jestem zdezorientowany tym, jak ktoś, kto powiedział „wracam, gdy folder jest odmontowany”, mógł powiedzieć 3 minuty później „Myślę, że zostały usunięte”. Na szczęście dla wszystkich innych ta pierwsza jest tutaj rzeczywistością.
underscore_d

111

Po zamontowaniu systemu plików w katalogu /mount-pointnie można już uzyskać /mount-pointbezpośredniego dostępu do plików w katalogu . Nadal istnieją, ale /mount-pointteraz odnoszą się do katalogu głównego zamontowanego systemu plików, a nie do katalogu, który służył jako punkt podłączenia, więc zawartość tego katalogu nie jest dostępna, przynajmniej w ten sposób. Na przykład:

# 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

Istnieją sposoby uzyskania scalonego widoku zamontowanego systemu plików i danych, które już były obecne, ale potrzebujesz dodatkowej warstwy zwanej unijnym systemem plików .

Pod Linuksem istnieje sposób, aby zobaczyć ukryte pliki. Możesz użyć, mount --bindaby uzyskać inny widok systemu plików, w którym znajduje się punkt montowania. Na przykład

mount --bind / /other-root-view

Zobaczysz wszystkie pliki w głównym systemie plików pod /other-root-view.

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

W szczególności /mount-pointbędzie teraz dostępny jako /other-root-view/mount-point, a ponieważ /other-root-view/mount-pointnie jest punktem montowania, możesz tam zobaczyć jego zawartość:

# 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, ta odpowiedź właśnie uratowała mi tyłek, gdy potrzebowałem nagrać gwiazdkę, która została zapisana pod punktem montowania NSF! Zawsze myślałem - Bind miał taką samą perspektywę jak użytkownik. Dziękuję Ci!
andyortlieb

Co z katalogami? Jeśli po zamontowaniu /mount-point/1/zamontowałem inny system plików /mount-point/, czy nadal mogę uzyskać dostęp /mount-point/1/?
CMCDragonkai

@CMCDragonkai Tak, pośrednio poprzez użycie mount binda, jak opisano w mojej odpowiedzi.
Gilles 'SO - przestań być zły'

Giles, to genialna technika, która pomogła mi przeanalizować zawartość mojego systemu. Pomógł także w innym pytaniu, jak sprawdzić użycie wszystkich katalogów głównych bez przechodzenia przez punkty montowania. Rozwiązanie: mkdir /r; mount --bind / /r; du -sh /r/*. Dzięki
Manngo

@Manngo do wykorzystania w przyszłości, nie jest to konieczne. du -x(odpowiednik du --one-file-system) zrobiłby to bez potrzeby --bindshenaniganów.
Darael
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.