我正在使用 Ubuntu 23.04,我假设 Ubuntu 使用 autofs 自动挂载。我不熟悉 autofs 配置。
当我通过 USB 连接带标签的外部驱动器时,它们会根据 中的标签自动挂载/media/user/label
。但是,如果/media/user/label
已经存在(未挂载任何内容 - 空目录),它会挂载在 上/media/user/label1
。
这不是我想要的。如果这些旧的挂载点存在,我希望按原样使用它们。
这是可行的配置吗?如果不行,我宁愿它失败并且不安装任何东西。
答案1
有足够的解释@vanadium 的回答以及这个答案... 所以,我在这里提供一个解决方法... UDEV 规则可以自动检查并删除挂载点(如果它存在于下)/media/user
。
基本上,您可以/etc/udev/rules.d/
像这样创建一个文件:
sudo nano /etc/udev/rules.d/70-label.rules
并使其有效某个用户,在其中添加这两行,并将user
这两行更改为所需的用户名,例如您的用户名:
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rmdir /media/user/%E{ID_FS_LABEL}"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rmdir /media/user/%E{ID_FS_UUID}"
或使其有效全部用户,请添加以下两行:
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/sh -c '/bin/rmdir /media/*/%E{ID_FS_LABEL}'"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/sh -c '/bin/rmdir /media/*/%E{ID_FS_UUID}'"
然后保存文件并重新加载 UDEV,如下所示:
sudo systemctl restart udev
这应该适用于标记和未标记的分区/文件系统。
注意:插入带有分区的 USB 磁盘将触发上述规则,并且无论当前登录的用户是谁,上述规则都会运行,并将运行命令,因此root
,您可能需要记住这一点,我将其用作/bin/rmdir
安全措施,因为它只会删除空目录以及指定的实际路径,所以它应该只删除/media/user
...下的目录。还sd[b-z][0-9]
假设当您插入第一个 USB 磁盘时,sdb
内核会为其命名...但是,如果情况并非如此,并且系统上的命名从 eg 开始,sdc
因为您的机器中有多个硬盘,则sd[c-z][0-9]
出于性能原因将其更改为 eg。
答案2
不,这不是一个可行的配置。原则上,旧的挂载点不应该存在:每当自动挂载的可移动驱动器被移除时,旧的挂载点也会被自动移除。
因此,首先,移除 USB 驱动器,然后删除仍然存在的旧挂载点。然后重新连接 USB 驱动器:挂载点现在将以您期望的名称重新创建。
如果您确保小心地断开驱动器,或者在移除驱动器之前正确关闭系统,则每次的挂载点都应自动删除。
如果您采取了这些预防措施,但仍然看到问题,则可能是其他问题正在发生。如果找不到原因,则解决方法可能是在启动时自动删除该挂载点。