Ich habe versucht, etwas Ähnliches zu erreichen, aber die Antwort von ephemient erklärte nicht die Semantik der Methode. Es ist für mich fehlgeschlagen und so habe ich hier auf unix.SE fast die gleiche Frage gestellt. Nach einem Kommentar habe ich es selbst herausgefunden und beantwortet. Dies ist eine überarbeitete Version meiner Antwort, die hier in diesen Kontext passt. Ich habe meine andere Frage (und Antwort) zugunsten dieser Frage entfernt.
Folgendes habe ich versucht:
Beispielfall
Reittiere:
/dev/sda1 on / type ext4 (rw)
/dev/sdb1 on /data type ext4 (rw)
/data/home on /home type none (rw,bind)
Nach dem Einhängen habe /
ich einen Ordner /home/joe
für Benutzer joe
. Sobald der andere Ort gemountet ist ( /data
), habe ich den vollständigen Satz von Home-Ordnern zur Verfügung, so dass ich sie an Ort und Stelle binde ( /data/home on /home
). Es gibt einen Ordner /data/home/joe
, so lange das Mounten von /dev/sdb1
erfolgreich ist, bekommt er den Inhalt von /data/home/joe
, sonst greift er auf /home/joe
(on /dev/sda1
!) Zurück .
Wenn es erfolgreich ist , wie kann ich den ursprünglichen Inhalt des zugreifen /home/joe
(auf /dev/sda1
!) Anstelle der an Ort und Stelle binden montierte aus /data/home/joe
?
Lösung
Basierend auf einem Kommentar von Patricks Kommentar zu meiner Frage und der Lösung durch Ephemient (akzeptierte Antwort hier), kam ich auf Folgendes.
Es ist offenbar möglich mount --bind
(oder mount -o bind
) den übergeordneten Ordner ( dies ist der entscheidende Teil ) eines bind-mount an anderer Stelle und Zugriff dadurch den ursprünglichen Inhalt. Also für meinen Beispielfall, anstatt zu versuchen:
mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath
(dh die bereits gebundenen Stellen an anderer Stelle einhängen) Ich musste:
test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath
Das hat Patrick in seinem Kommentar gemeint
Sofern Sie nicht über /
(root) erneut einsteigen , sollte diese Antwort einwandfrei funktionieren.
Solange Sie einen übergeordneten Ordner für den eingebundenen Speicherort haben, funktioniert dies, wenn auch mit einer Indirektion, wie oben gezeigt. Wenn Sie etwas überbinden, haben /
Sie Pech, da es keinen übergeordneten Ordner für gibt /
.
mount --bind
, bekam aber nur ein paar verschlungene Ideen, die sicher kaputt gingen, wenn ich sie brauchte. Dies macht genau das, was ich brauche und kann sogar als permanentes Reittier eingesetzt werden. Vielen Dank