Que fait Linux avec les fichiers existants dans un point de montage?

52

Si je tente de monter un dossier contenant déjà des fichiers, Linux me donne-t-il un message d'erreur ou continue-t-il et affiche-t-il à la fois le système de fichiers monté et les fichiers déjà présents dans le dossier?

svelte
la source
2
Pourrait toujours l'essayer avec des fichiers de test, non?
Chris
Je le ferais si je pouvais. Cela a juste fonctionné que je n'avais rien à tester. J'ai essayé de démonter et de monter le disque en question, mais les résultats n'étaient pas concluants car ils contenaient tous deux les mêmes fichiers.
slim
Existe-t-il un moyen de rendre le dossier non lisible afin que les fichiers ne puissent pas y exister?
endolith

Réponses:

33

Il va juste être monté, et les fichiers disparaissent, revenant quand le dossier est démonté.

Azz
la source
1
Qu'entendez-vous par disparaître? Ils continuent d'exister sur le serveur et ne sont tout simplement pas affichés ou sont-ils supprimés?
slim
Je vais faire un rapide contrôle, mais je pense qu'ils sont supprimés.
Azz
17
+1 Les fichiers sont simplement invisibles lorsque le répertoire est monté "sur" eux. Ils ne partent jamais vraiment, ils sont juste inaccessibles ...
sleske
10
Cela fonctionne comme une pile, si vous montez autre chose, cela masque le contenu précédent. Lorsque vous démontez, le contenu précédent redevient visible.
vtest
4
Je suis dérouté par la façon dont quelqu'un qui a dit "revenir quand le dossier est démonté" a été capable de dire 3 minutes plus tard "je pense qu'ils sont supprimés". Heureusement pour tous les autres, le premier est la réalité ici.
underscore_d
111

Lorsque vous montez un système de fichiers sur un répertoire /mount-point, vous ne pouvez plus accéder /mount-pointdirectement aux fichiers sous . Ils existent toujours, mais font /mount-pointmaintenant référence à la racine du système de fichiers monté, et non au répertoire qui a servi de point de montage; le contenu de ce répertoire ne peut donc pas être consulté, du moins de cette façon. Par exemple:

# 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

Il existe des moyens d'obtenir une vue fusionnée du système de fichiers monté et des données déjà présentes, mais vous avez besoin d'une couche supplémentaire appelée système de fichiers union .

Sous Linux, il existe un moyen de voir les fichiers cachés. Vous pouvez utiliser mount --bindpour obtenir une autre vue du système de fichiers où se trouve le point de montage. Par exemple

mount --bind / /other-root-view

Vous verrez tous les fichiers dans le système de fichiers racine sous /other-root-view.

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

En particulier, /mount-pointsera désormais accessible en tant que /other-root-view/mount-point, et comme ce /other-root-view/mount-pointn’est pas un point de montage, vous pouvez voir son contenu ici:

# 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
Gilles, arrête de faire le mal
la source
5
Gilles, cette réponse m'a sauvé la tête alors que je devais obtenir des enregistrements astérisques sauvegardés sous un point de montage NSF! J'ai toujours pensé que --bind avait la même perspective que l'utilisateur. Je vous remercie!
andyortlieb
Qu'en est-il des annuaires? Si je monte /mount-point/1/puis monte un autre système de fichiers /mount-point/, puis-je quand même accéder /mount-point/1/?
CMCDragonkai
@CMCDragonkai Oui, indirectement en utilisant un montage de liaison comme décrit dans ma réponse.
Gilles, arrête de faire le mal
Giles, c'est une technique brillante qui m'a aidé à analyser ce qui se trouve sur mon propre système. Cela a également aidé avec une autre question, à savoir comment vérifier l'utilisation de tous les répertoires racine sans traverser les points de montage. Solution: mkdir /r; mount --bind / /r; du -sh /r/*. Merci
Manngo
@Manngo pour référence future, ce n'est pas nécessaire. du -x(équivalent à du --one-file-system) aurait fait cela sans la nécessité de --bindmanigances.
Darael 21/02/2017