从作为挂载目标的文件夹中恢复数据

Tha*_*rpa 6 mount

我有一个/acme包含数据的文件夹。我发现我应该已经安装/dev/centos/lv_acme到/acme. 我在网上做了最少的研究,似乎安装并没有删除数据。(虽然我现在假设我误解了我读到的内容。)

我执行了命令

mount /dev/centos/lv_acme /acme  
Run Code Online (Sandbox Code Playgroud)

我相信你现在已经想通了,/acme不再包含我的数据。有没有办法恢复原来的数据/acme?

fro*_*utz 15

挂载不会擦除数据,但它可能会隐藏数据,因为挂载点的内容已替换为已挂载的文件系统(可能为空)。当然,可能会有副作用(程序的行为取决于挂载方式),因此当您对挂载点管理不善时,事情仍然会出现可怕的错误。

如果您在错误的位置挂载了一个空文件系统,只需 umounting 即可:

umount /acme
Run Code Online (Sandbox Code Playgroud)

如果您想在不卸载的情况下查看挂载点下方的内容,您可以在别处绑定挂载父文件系统:

mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/acme
Run Code Online (Sandbox Code Playgroud)

如果有更多的文件系统层相互挂载,那就更难了。使用lsblk和cat /proc/mounts找出结构。您可以在临时目录中单独绑定挂载每一层并查看内容。

请注意,默认情况下这些绑定安装是可写的,因此可以更改、重命名和删除文件。对于只读视图,只需添加--read-only.


and*_*coz 14

简单,

umount /acme
Run Code Online (Sandbox Code Playgroud)

您的原始/acme目录只是“隐藏”在挂载点下。

如果没有什么可以阻止您卸载目录,您可以卸载它,将数据复制到其他地方并重新安装它。

  • 我经常将一个名为`not-mounted` 的文件放在_supposed_ 用作挂载点的目录中——如果我能看到该文件,那么我就知道该卷没有挂载。卸载卷会使文件再次可见。 (14认同)