当另一个目录已安装时,如何访问该目录的内容?

当另一个目录已安装时,如何访问该目录的内容?

有一个名为 /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 映像,您可以将其刻录在 CD 上,或者放在 USB 驱动器上以从那里启动。提供此功能的一些发行版包括 Debian、Knoppix 和 MX Linux。

相关内容