Was macht Linux mit vorhandenen Dateien in einem Einhängepunkt?


52

Wenn ich versuche, einen Ordner zu mounten, in dem sich bereits Dateien befinden, gibt Linux eine Fehlermeldung aus oder zeigt es das gemountete Dateisystem und die Dateien an, die sich bereits im Ordner befinden?


2
Könnte es immer mit ein paar Testdateien ausprobieren, nein?
Chris

Ich würde von wenn ich könnte. Es hat einfach geklappt, dass ich nichts zum Testen hatte. Ich habe versucht, das fragliche Laufwerk abzumelden und zu mounten, aber die Ergebnisse waren nicht schlüssig, da beide die gleichen Dateien hatten.
schlank

Gibt es eine Möglichkeit, den Ordner unbeschreiblich zu machen, sodass Dateien dort nicht existieren können?
Endolith

Antworten:


33

Es wird nur gemountet und die Dateien verschwinden, wenn der Ordner nicht gemountet wird.


1
Was meinst du mit verschwinden? Sie existieren weiterhin auf dem Server und werden einfach nicht angezeigt oder sind die gelöscht?
Slim

Ich werde schnell nachsehen, aber ich denke, sie sind gelöscht.
Azz

17
+1 Die Dateien sind einfach unsichtbar, während das Verzeichnis "über" ihnen eingehängt wird. Sie gehen nie wirklich weg, die sind einfach unzugänglich ...
sleske

10
Es funktioniert wie ein Stapel, wenn Sie etwas anderes einhängen, wird der vorherige Inhalt ausgeblendet. Wenn Sie den Ladevorgang beenden, wird das vorherige Zeug wieder sichtbar.
Vtest

4
Ich bin verwirrt darüber, wie jemand, der sagte, er käme zurück, wenn der Ordner nicht geladen ist, 3 Minuten später sagen konnte, er sei gelöscht. Zum Glück für alle anderen ist Ersteres die Realität hier.
Underscore_d

111

Wenn Sie ein Dateisystem in ein Verzeichnis mounten /mount-point, können Sie nicht mehr /mount-pointdirekt unter auf Dateien zugreifen . Sie sind noch vorhanden, /mount-pointbeziehen sich aber jetzt auf das Stammverzeichnis des bereitgestellten Dateisystems und nicht auf das Verzeichnis, das als Bereitstellungspunkt diente, sodass auf den Inhalt dieses Verzeichnisses zumindest auf diese Weise nicht zugegriffen werden kann. Zum Beispiel:

# 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

Es gibt verschiedene Möglichkeiten, eine zusammengeführte Ansicht des bereitgestellten Dateisystems und der bereits vorhandenen Daten zu erhalten. Sie benötigen jedoch eine zusätzliche Ebene, das so genannte Unionsdateisystem .

Unter Linux gibt es eine Möglichkeit, die versteckten Dateien anzuzeigen. Mit können Sie mount --bindeine andere Ansicht des Dateisystems abrufen, in dem sich der Einhängepunkt befindet. Zum Beispiel

mount --bind / /other-root-view

Sie sehen alle Dateien im Root-Dateisystem unter /other-root-view.

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

Insbesondere /mount-pointwird jetzt zugänglich sein /other-root-view/mount-point, und da /other-root-view/mount-pointes sich nicht um einen Mount-Punkt handelt, können Sie seinen Inhalt dort sehen:

# 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, diese Antwort hat mir gerade den Hintern gerettet, als ich einige Sternchenaufnahmen abrufen musste, die unter einem NSF-Mount-Punkt gespeichert wurden! Ich dachte immer --bind hat die gleiche Perspektive wie der Benutzer. Danke!
Andyortlieb

Was ist mit Verzeichnissen? Kann ich trotzdem auf ein /mount-point/1/anderes Dateisystem /mount-point/zugreifen, wenn ich es bei eingehängt habe /mount-point/1/?
CMCDragonkai

@ CMCDragonkai Ja, indirekt durch Verwendung eines Bind-Mount, wie in meiner Antwort beschrieben.
Gilles 'SO - hör auf böse zu sein'

Giles, das ist eine brillante Technik und hat mir geholfen zu analysieren, was sich auf meinem eigenen System befindet. Es hat auch bei einer anderen Frage geholfen, nämlich wie die Verwendung aller Stammverzeichnisse überprüft werden kann, ohne Mount-Punkte zu durchlaufen. Lösung: mkdir /r; mount --bind / /r; du -sh /r/*. Thanks
Manngo

@Manngo zum späteren Nachschlagen, dies ist nicht erforderlich. du -x(äquivalent zu du --one-file-system) hätte das ohne die Notwendigkeit von --bindSpielereien getan.
Darael
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.