访问阴影挂载点

访问阴影挂载点

A挂载点 /mnt/sub被另一个安装点遮挡/mnt。是否总是可以访问已安装的文件系统?

root 访问权限是给定的。该系统是一个相当新的Linux。

示例场景:访问覆盖根的分支

基本操作顺序是:

mount device1 /mnt/sub
mount device2 /mnt

之后/mnt/sub是一个文件device2(如果存在)。问题是如何访问device1.

有些设备可以安装两次,所以mount device1 /elsewhere可以工作。但这并不适用于所有设备,特别是 FUSE 文件系统。

这与已经覆盖了情况子目录被挂载点遮蔽,但子目录的挂载点本身是可见的,并且绑定挂载可以创建一个清晰的视图。在上面的示例中,mount --bind / /elsewhere让我们看到/mnt/sub上的根文件系统的目录/elsewhere/mnt/sub,但是这个问题是关于访问 上的文件系统device1

答案1

# unshare --mount  # this opens a sub-shell
# cd /
# umount /mnt

做你想做的事

# exit  # close the sub-shell

答案2

这可能来得太晚了,但我通常这样做的方式是:

  • 将原始设备再次挂载到不同的目录
  • 新目录现在仅包含原始设备的文件夹,而不包含任何子安装。
  • 这不依赖于安装顺序、内核命名空间支持等!
  • 不需要您触摸/移动当前安装(您的服务可能会使用它)

例如,这对于您的根设备是如何工作的:

mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt
cd /mnt
# this folder only contains files from the root device

在你的例子中:

# your actual (untouched) work dirs
mount device1 /mnt/sub
mount device2 /mnt

# access /mnt/sub contents in another dir by remounting it there
mount device1 /mnt/tmp
cd /mnt/tmp
# any operations here apply solely to device1

答案3

根本无法通过该路径访问位于device1下面的文件。/mnt/sub在其他地方重新安装设备,或确保两个设备以相反的顺序安装。

相关内容