如果将驱动器安装到已经包含文件的文件夹中,文件会去哪里?


32

我只是不小心将新驱动器安装到已经包含文件的文件夹中。我不在乎它们并将它们放在其他位置,但是该文件夹现在显示为空。我很好奇文件发生了什么。它们是否只是被Linux删除?


他们不会在任何地方“去”。您只是看不到它们。
沙杜尔2012年

14
当您不阅读书中的字符时,它们会到达同一地方。
安德鲁·比尔斯

5
这是我有时使用/滥用以了解某些事物的状态的有趣的安装功能/功能之一。一些挂载点(目录),我将在其中保留一个空文件not mounted,以便浏览该文件时,我会立即知道由于某种原因未挂载该文件。
killermist 2012年

Answers:


37

只是“阴影”,卸载后将再次出现。:)

实际上,文件是“完整”的,如果您需要立即访问它们而无需卸载,则可以通过所谓的bind挂载来解决:

mount --bind /Original/FS/Mount/Point /Somewhere/Else

它之所以起作用,是因为当您要求内核将文件系统挂载到某个挂载点时,内核会将那个挂载点视为要挂载的文件系统的“查看端口”,因此可以预期您将在其中看到挂载的FS内容。

但是,并不是唯一的出路如何将这些FSes“层”可以结合到单一视图。有一种所谓的“ 联合安装 ”方法(很高兴得知,这种“计划9中的中心概念”,BTW)。在Linux上,您可以使用Aufs,它从来没有进入主线内核,或者(自3.18起)(现在是OverlayFS)进入了它— 做到了


21

新安装的文件系统就像一个覆盖物,它隐藏了一部分初始文件系统。有一些访问文件的技巧,例如poige描述的绑定安装。在Linux上,我个人喜欢一个事实,即您可以在不同的安装点上多次安装文件系统。所以,你可以非常清楚安装在根文件系统/,以及对/mnt。这在调试丢失的空间/丢失的文件/计算磁盘使用情况/ ...时非常有用

陷阱:

  • 旧文件仍然存在并且已用完空间。在挂载隐藏的文件中“丢失”磁盘空间是一个常见的错误。例如,当您不小心将大文件写入目录中并在某个时候决定在其上安装文件系统时。例如在正确安装日志文件系统之前意外启动了一个大型数据库...
  • 当程序打开的文件随后被新安装的文件系统隐藏时,该程序将不在乎它,并成功地继续使用“隐藏”文件,直到将其关闭。从那一刻起,该文件将对进程不可见,直到卸载新文件系统并再次显示基础目录为止。

有趣的是,您可以多次挂载文件系统。这感觉会派上用场。
T. Brian Jones
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.