Linux对挂载点中的现有文件有什么作用?


52

如果我尝试挂载已经有文件的文件夹,Linux是否会给我一条错误消息或继续显示挂载的文件系统和该文件夹中已经存在的文件?


2
总是可以用一些测试文件来尝试一下,不是吗?
克里斯,2010年

如果可以的话,我会的。事实证明,我没有什么可以测试的。我尝试卸载和安装有问题的驱动器,但结果没有定论,因为它们都有相同的文件。
苗条

有没有一种方法可以使文件夹不可写,从而使文件在那里存在?
endlith 2013年

Answers:


33

它将被挂载,文件消失,在挂载文件夹后返回。


1
你是什​​么意思消失?它们继续存在于服务器上,只是不显示或已删除?
苗条,时间

我将进行快速检查,但我认为它们已删除。
Azz

17
+1当目录“挂载”在文件上时,它们只是不可见。他们永远不会真正消失,只是无法进入……
sleske 2010年

10
它就像堆栈一样工作,如果您挂载其他东西,它将隐藏先前的内容。卸载后,以前的内容将再次可见。
vtest 2010年

4
我对有人说“卸载文件夹后回来”如何在3分钟后说“我认为已删除”感到困惑。庆幸的是,对于其他所有人来说,前者是现实。
underscore_d

111

在目录上挂载文件系统时/mount-point,将无法再/mount-point直接访问下的文件。它们仍然存在,但是/mount-point现在是指已挂载文件系统的根目录,而不是指用作挂载点的目录,因此至少不能以这种方式访问​​此目录的内容。例如:

# touch /mount-point/somefile
# ls /mount-point/somefile
/mount-point/somefile
# mount /dev/something /mount-point
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory

有几种方法可以获取已挂载文件系统和已经存在的数据的合并视图,但是您需要一个称为联合文件系统的额外层。

在Linux下,有一种查看隐藏文件的方法。您可以mount --bind用来获取挂载点所在文件系统的另一个视图。例如

mount --bind / /other-root-view

您会在的根文件系统中看到所有文件/other-root-view

# cat /other-root-view/etc/hostname 
darkstar

特别是,/mount-point现在可以通过进行访问/other-root-view/mount-point,并且由于/other-root-view/mount-point不是挂载点,因此您可以在其中看到其内容:

# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
# ls /other-root-view/mount-point/somefile
/other-root-view/mount-point/somefile

5
吉尔(Gilles),当我需要获取一些保存在NSF挂载点下方的星号记录时,此答案就保存了我的屁股!我一直以为--bind与用户具有相同的观点。谢谢!
andyortlieb 2011年

那目录呢?如果我在安装了,/mount-point/1/然后又在其上安装了另一个文件系统/mount-point/,是否仍可以访问/mount-point/1/
CMCDragonkai 2015年

@CMCDragonkai是的,间接使用我的答案中所述的绑定安装。
吉尔斯(Gillles)“所以别再邪恶了”

Giles,这是一项出色的技术,它帮助我分析了自己系统上的内容。它还有助于解决另一个问题,即如何在不遍历安装点的情况下检查所有根目录的使用情况。解决方案:mkdir /r; mount --bind / /r; du -sh /r/*。谢谢
Manngo '16

@Manngo供将来参考,这不是必需的。 du -x(相当于du --one-file-system)就可以做到这一点,而无需使用--bind恶作剧。
Darael '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.