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.