Starałem się osiągnąć coś podobnego, ale ephemient odpowiedź „s nie wyjaśnić semantykę metody. Nie udało mi się, więc zadałem praktycznie to samo pytanie wcześniej tutaj na unix.SE. Po komentarzu sam to wymyśliłem i odpowiedziałem. To jest zredagowana wersja mojej odpowiedzi, która pasuje tutaj. Usunąłem moje inne pytanie (i odpowiedź) na korzyść tego.
Oto, co próbowałem zrobić:
Przykładowa skrzynka
Wierzchowce:
/dev/sda1 on / type ext4 (rw)
/dev/sdb1 on /data type ext4 (rw)
/data/home on /home type none (rw,bind)
Po zamontowaniu /
mam folder /home/joe
dla użytkownika joe
. Gdy druga lokalizacja zostanie zamontowana ( /data
), mam pełny zestaw folderów domowych, więc łączę je na miejscu ( /data/home on /home
). Jest folder /data/home/joe
, więc dopóki montaż się /dev/sdb1
powiedzie, dostanie zawartość /data/home/joe
, w przeciwnym razie spadnie do /home/joe
(włączony /dev/sda1
!).
Kiedy to się powiedzie, w jaki sposób mogę uzyskać dostęp do oryginalnej zawartości /home/joe
(on /dev/sda1
!) Zamiast tych, które są zamontowane na oprawach /data/home/joe
?
Rozwiązanie
Opierając się na komentarzu Patryka na moje pytanie i rozwiązaniu autorstwa ephemient (przyjęto tutaj odpowiedź), wymyśliłem następujące.
To jest widocznie możliwe mount --bind
(lub mount -o bind
) do folderu nadrzędnego ( jest to kluczowa część ) z bind-zamontować w innym miejscu, a tym samym dostęp do oryginalnych treści. W moim przypadku zamiast próbować:
mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath
(tj. zamontować już zamontowane lokalizacje w innym miejscu) Musiałem:
test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath
To właśnie miał na myśli Patrick w swoim komentarzu
O ile nie zamykasz się ponownie /
(root), ta odpowiedź powinna działać dobrze.
Tak długo, jak masz dostępny folder nadrzędny do lokalizacji podłączonej do wiązania, będzie on działał, choć z jedną pośrednią interwencją, jak pokazano powyżej. Jeśli coś połączysz, /
nie masz szczęścia, ponieważ nie ma folderu nadrzędnego /
.
mount --bind
, ale dostałem tylko kilka zawiłych pomysłów, które z pewnością się załamią, gdy będę ich potrzebować. Robi dokładnie to, czego potrzebuję, a nawet może zostać zamontowany na stałe. Dzięki