마운트 지점의 원래 내용에 액세스


32

내 헤드리스에 NAS 나는이 sdf1같은 (플래시 카드)를 장착 /하는 동안이 /home에서 장착 lv00(LVM 볼륨이 소프트웨어 RAID의 지원). RAID가 실패 할 때 머신에 액세스하려면 /home/foo/.ssh파일 시스템에 ssh 공개 키 등의 사본이 있습니다 sdf1.
(가) 장착에 의해 숨겨진 파일을 업데이트하려면 /home일반적으로 다시 마운트 I를 lv00의를 /mnt/home, 내가하고 이동해야 할 일을 lv00다시 제자리에.
마운트 해제하지 않고 이것을 달성하는 방법이 /home있습니까?

답변:


44
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

를 사용하는 한 --bind(위에있는 것과는 달리 --rbind) 마운트 된 것없이 마운트의 복제본을 얻습니다.


완전한! 의 아이디어를 가지고 놀았 mount --bind지만 필요할 때 깨지기 쉬운 복잡한 아이디어 만 얻었습니다. 이것은 내가 필요한 것을 정확하게 수행하고 심지어 영구 마운트로 들어갈 수 있습니다. 감사합니다
Janus


다른 답변에서 다루는 것처럼 마운트로 덮은 디렉토리 위의 레벨을 바인드 마운트해야한다는 사실을 포함하도록이 답변을 편집 할 가치가 있습니까? 이 답변은 더 짧아서 빨리 읽을 수 있기 때문에 더 좋습니다!
Michael Firth

5

비슷한 것을 달성하려고 노력했지만 ephemient 의 대답은 방법의 의미를 설명하지 못했습니다. 그것은 나에게 실패했고 그래서 나는 여기에 unix.SE에서 거의 같은 질문을 물었다. 코멘트 후 나는 그것을 스스로 알아 내고 대답했다. 이것은이 맥락에 맞게 편집 된 버전의 답변입니다. 이 질문에 찬성하여 다른 질문 (및 답변)을 제거했습니다.

내가하려고했던 것은 다음과 같습니다.

사례

마운트 :

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

마운트 후 사용자 /폴더 /home/joe가 있습니다 joe. 다른 위치가 마운트되면 ( /data) 전체 홈 폴더 세트를 사용할 수 있으므로 제자리에 바인드 마운트됩니다 ( /data/home on /home). 폴더 /data/home/joe가 있으므로 마운팅에 /dev/sdb1성공하면의 내용을 얻습니다 /data/home/joe. 그렇지 않으면 /home/joe( /dev/sda1!)로 돌아갑니다 .

그것이 성공, 어떻게의 원래 내용에 액세스 할 수 있습니다 /home/joe(에 /dev/sda1!) 대신에서 제자리에 바인딩이 장착 된 사람들 /data/home/joe?

해결책

에 의해 코멘트를 바탕으로 패트릭 내 질문 ephemient에 의해 솔루션 (여기 허용 대답)에의 코멘트, 나는 다음과 함께했다.

이것은 에 명백하게 가능 mount --bind(또는 mount -o bind)이 상위 폴더 ( 이것은 중요한 부분 (A)의 다른 바인드 장착시켜 원래의 내용을 액세스). 내 예제의 경우 다음을 시도하는 대신

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(즉, 이미 바인드 마운트 위치를 다른 곳에 마운트)

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

이것이 패트릭이 그의 의견에서 의미 한 바입니다.

/(루트)를 다시 마운트하지 않는 한 그 대답은 정상적으로 작동합니다.

사용 가능한 바인드 마운트 위치에 대한 상위 폴더가 있으면 위와 같이 하나의 간접 경로로도 작동합니다. 에 /대한 상위 폴더가 없기 때문에 무언가를 바인딩 마운트 하면 운이 좋지 않습니다 /.


부모 폴더를 마운트하는 것이 내가 빠뜨린 핵심 부분이었습니다. 감사.
aidan

1

다음을 사용하여 마운트를 마운트 해제하지 않고 새 위치로 마운트를 이동할 수 있습니다 mount --move.

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home

1
고마워 마이클. 다른 사용자가 / home에 액세스 할 수 없게하는 것과 같은 단점이 있습니다.
Janus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.