Що робить 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.