Що робить Linux із наявними файлами в точці монтажу?


52

Якщо я спробую змонтувати папку, у якій вже є файли, чи може Linux надіслати мені повідомлення про помилку чи продовжувати показувати як змонтовану файлову систему, так і файли, які вже були в папці?


2
Ви завжди можете спробувати це з деякими тестовими файлами, ні?
Кріс

Я б, якби міг. Просто вийшло, що я не мав нічого тестувати. Я спробував відключити та встановити відповідний диск, але результати були непереконливими, оскільки вони обоє мали однакові файли.
стрункий

Чи є спосіб зробити папку незаписною, щоб файли там не могли існувати?
ендоліт

Відповіді:


33

Він просто змонтується, і файли зникають, повертаючись, коли папка вимкнена.


1
Що ви маєте на увазі під зникненням? Вони продовжують існувати на сервері і просто не відображаються або видаляються?
стрункий

Я піду на швидку перевірку, але, думаю, їх видалено.
Azz

17
+1 Файли просто непомітні, поки каталог встановлюється над ними. Вони ніколи не розійдуться, просто недоступні ...
sleske

10
Він працює як стек, якщо ви змонтуєте щось інше, він приховує попередній вміст. Після відключення попередній матеріал знову стає видимим.
vtest

4
Мене бентежить те, як той, хто сказав "повертаючись, коли папку відключено", міг сказати через 3 хвилини "Я думаю, що їх видалено". На щастя за всі інші, колишня реальність тут.
підкреслюй_d

111

Коли ви монтуєте файлову систему в каталозі /mount-point, ви більше не можете отримувати доступ до файлів під /mount-point. Вони все ще існують, але /mount-pointтепер посилається на корінь змонтованої файлової системи, а не на каталог, який служив точкою монтування, тому до вмісту цього каталогу не можна отримати доступ, принаймні таким чином. Наприклад:

# 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

Існують способи отримати об'єднаний вигляд змонтованої файлової системи та даних, які вже були присутні, але вам потрібен додатковий шар, який називається файловою системою об'єднання .

У Linux є спосіб побачити приховані файли. Ви можете використовувати mount --bindінший вигляд файлової системи, де знаходиться точка монтування. Наприклад

mount --bind / /other-root-view

Ви побачите всі файли в кореневій файловій системі під /other-root-view.

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

Зокрема, /mount-pointтепер він буде доступний як /other-root-view/mount-point, і оскільки /other-root-view/mount-pointце не місце монтування, ви можете побачити його вміст там:

# 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
Жиль, ця відповідь просто врятувала мою недопалку, коли мені потрібно було отримати записи зірочок, які збереглися під точкою кріплення NSF! Я завжди думав - bind мав таку ж точку зору, що і користувач. Дякую!
andyortlieb

А як щодо каталогів? Якщо я змонтований, /mount-point/1/тоді монтується інша файлова система /mount-point/, чи можу я все-таки отримати доступ /mount-point/1/?
CMCDragonkai

@CMCDragonkai Так, опосередковано, використовуючи кріплення для зв'язування, як описано в моїй відповіді.
Жил 'ТАК - перестань бути злим'

Джайлз, це геніальна методика і допомогла мені проаналізувати, що є в моїй власній системі. Він також допоміг з іншим питанням, яким є перевірка використання всіх кореневих каталогів без проходження точок монтажу. Рішення mkdir /r; mount --bind / /r; du -sh /r/*. Спасибі
Манго

@Manngo для подальшого використання, це не потрібно. du -x(еквівалентно du --one-file-system) зробив би це без необхідності в --bindшнаніганах.
Дараель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.