마운트 지점의 원래 콘텐츠에 액세스

마운트 지점의 원래 콘텐츠에 액세스

헤드리스 NAS에서 sdf1(플래시 카드)를 마운트하는 동시에 /(소프트웨어 RAID로 지원되는 LVM 볼륨)에서도 /home마운트 했습니다. lv00RAID 장애 발생 시 컴퓨터에 액세스할 수 있도록 /home/foo/.sshSSH 공개 키 등의 복사본을 파일 시스템에 저장합니다 sdf1.
마운트에 의해 숨겨진 파일을 업데이트하려면 /home일반적으로 를 다시 마운트 lv00하고 /mnt/home해야 할 일을 수행한 다음 lv00다시 이동합니다.
제거하지 않고 이를 달성할 수 있는 방법이 있습니까 /home?

답변1

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

--bind와 반대로 사용하는 한 --rbind마운트 위에 무언가를 마운트하지 않고도 마운트의 복제본을 얻을 수 있습니다.

답변2

비슷한 것을 얻으려고 노력했지만단명대답은 방법의 의미를 설명하지 않습니다. 나에게는 실패했기 때문에 앞서 unix.SE에 대해 거의 동일한 질문을 했습니다. 댓글을 다신 후 제가 직접 파악해서 답변을 드렸습니다. 이것은 여기의 맥락에 맞게 내 답변의 편집된 버전입니다. 이 질문에 찬성하여 다른 질문(및 답변)을 삭제했습니다.

이것이 내가하려는 일입니다.

예시 사례

산:

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

설치 후 사용자 폴더가 /생겼습니다 . 다른 위치가 설치되면( ) 홈 폴더 전체 세트를 사용할 수 있으므로 해당 위치( ) 에 번들로 마운트했습니다 . 폴더가 있으므로 마운트가 성공하면 콘텐츠를 가져오고 그렇지 않으면 (on !) 으로 돌아갑니다 ./home/joejoe/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)상위 폴더(이것이 핵심 부분이다)가 다른 곳에 번들로 설치되어 원본 콘텐츠에 액세스할 수 있습니다. 따라서 내 예에서는 다음을 시도하지 마십시오.

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

이것이 Patrick이 그의 의견에서 의미한 것입니다.

이 답변은 다시 설치(루트)하지 않는 한 /제대로 작동합니다 .

바인드 마운트 위치에 사용할 수 있는 상위 폴더가 있는 한 위에 표시된 대로 간접적인 방식이기는 하지만 작동합니다. 무언가를 번들로 설치했다면 /운이 좋지 않을 것입니다 /.

답변3

다음 명령을 사용하면 설치를 제거하지 않고 새 위치로 이동할 수 있습니다 mount --move.

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

관련 정보