如何恢复被 autofs 删除/移除的文件?

如何恢复被 autofs 删除/移除的文件?

我想自动在我的主目录中挂载一个目录,因此我尝试使用autofs它,结果autofs删除了我的主目录中的所有内容。

设置如下auto.master

/home/my-user auto.my-user

auto.my-user

# Mount points for the media folder

external-media  -fstype=auto    :/dev/sdb1

重新启动后,autofs我惊恐地发现它删除了我的主目录中的所有内容。

从输出来看,df -h这些文件似乎仍然占用着磁盘空间,这让我希望能够恢复它们。但我该如何找到它们呢?

我试过了:

sudo service autofs stop

但文件夹仍然是空的:

ls -al /home/my-user
total 4
drwxr-xr-x 2 root root    0 May  4 12:58 .
drwxr-xr-x 4 root root 4096 Nov 13 20:30 ..

关于如何恢复文件有什么提示吗?

答案1

重新启动 autofs 后,我惊恐地发现它删除了我的主目录中的所有内容。

它没有删除任何东西。它已将虚拟 autofs 文件系统挂载到目录上,与你定义的 autofs 映射相对应。你可以通过查看 来看到这一点findmnt

Autofs 被设计为支持通配符(*条目)甚至动态查找(例如,映射可能是脚本),而实现这一点的唯一方法是让它处理 autofs 挂载所在的整个目录,而不仅仅是挂载本身 - 这称为“间接”映射。

Linux 上的所有挂载都是不透明的,因此如果某个目录上挂载了某些内容,则该目录的实际内容将变得不可见,即使它们仍在物理文件系统上。要访问您的文件,请卸载挂载在那里的 autofs 文件系统(再次查看findmnt输出)。

#卸载/home/我的用户

(或者将其从您的 auto.master 映射中删除并重新启动。)

如果你想仅有的/home/my-user/external-media 成为 autofs 挂载,您需要通过直接的/-地图,首先在主地图中定义特殊条目:

自动主机管理工具
/-自动.direct

然后使用其完整路径定义挂载点:

/etc/auto.direct
/home/my-user/external-media -fstype=auto:/dev/sdb1

或者,为了使事情变得更简单,通过使用 systemd 内置的直接 autofs 挂载支持(不需要 autofs 守护进程):

/etc/fstab
/dev/sdb1 /home/my-user/external-media auto ro,x-systemd.automount 0 0

答案2

这些文件位于/home/文件系统中,您可以通过挂载磁盘来“隐藏”它们/dev/sdb1。您需要卸载使用 autofs 的磁盘:

umount /dev/sdb1

或者

umount /home/my-user

但要做到这一点,您需要成为 root 用户(或通过 访问其他用户sudo)。不要尝试登录到您的用户并使用sudo,否则将返回错误(如资源/磁盘繁忙)。

相关内容