我想自动在我的主目录中挂载一个目录,因此我尝试使用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
,否则将返回错误(如资源/磁盘繁忙)。