다른 디렉토리가 마운트될 때 디렉토리의 내용에 어떻게 액세스합니까?

다른 디렉토리가 마운트될 때 디렉토리의 내용에 어떻게 액세스합니까?

일부 파일이 포함된 /home이라는 기존 디렉터리가 있습니다. /etc/fstab을 사용하여 이 디렉토리에 파티션을 마운트했습니다.

UUID=10CD7304CE71E381   /home      ntfs    defaults        0       2

지금까지는 문제가 없습니다.

아무것도 제거하지 않고 /home의 원본 콘텐츠에 액세스하는 방법. 분명히 /home 파티션을 마운트 해제할 수 없습니다.

답변1

Linux에서는 해당 디렉터리를 별도의 디렉터리에 마운트 해제하여 이 작업을 수행할 수 있습니다.마운트 네임스페이스설치 전파 플래그는 다음으로 설정됩니다.사적인:

# truncate -s 3G blob
# mkfs.ext4 blob
...

# mkdir dir
# echo below > dir/file

# mount blob dir
# echo above > dir/file

# cat dir/file
above

# unshare --mount --fork --propagation private sh -c 'umount dir; cat dir/file'
below

# cat dir/file
above

# unshare --mount --fork --propagation private sh -c '
   umount dir
   for f in dir/file /dev/fd/7; do
       realpath --relative-to=. "$f"; cat "$f"
   done
' 7<dir/file
dir/file
below
dir/file
above

참고: 이 --propagation private플래그는 적어도 최신 버전의 기본값입니다 unshare(1). 강조하기 위해 추가했습니다.

답변2

번들로 설치하는 것이 더 간단합니다. unshare솔루션이 작동 하지 않습니다 . 바쁜 파일 시스템을 마운트 해제하고 싶지 않습니다.

mkdir /mnt/tmproot
mount --bind / /mnt/tmproot
ls /home # Still shows contents of mounted /home partition
ls /mnt/tmproot/home # pre-mount contents of mountpoint /home dir

원래 답변에 대한 크레딧:https://superuser.com/a/977082/111432

답변3

간단한 대답은 실시간 시스템을 사용하는 것입니다.

루트 파티션에 다른 파티션이 마운트되어 있는 경우 /home실제로 단순히 마운트를 해제하거나 마운트를 다시 바인딩할 수 없습니다. 그러나 라이브 시스템에는 자체 /home/이 있으며 일반적으로 루트 파일 시스템을 제공하는 파티션을 사용하지 않습니다. 따라서 라이브 시스템에서는 루트 파일 시스템을 마운트하기만 하면 거기에서 원래 /home 디렉토리에 액세스할 수 있습니다.

라이브 시스템을 찾는 것은 어렵지 않습니다. 꽤 많은 배포판이 CD에 굽거나 USB 드라이브에 넣어 부팅할 수 있는 라이브 CD 이미지를 제공하기 때문입니다. 이 기능을 제공하는 일부 배포판에는 Debian, Knoppix 및 MX Linux가 있습니다.

관련 정보