使用一个命令挂载指定的文件系统子集(“mount -a;但带有模式”)

使用一个命令挂载指定的文件系统子集(“mount -a;但带有模式”)

要挂载所有可用(且尚未挂载)的磁盘和文件系统/分区,可以使用

mount -a

但是,我想要挂载所有文件系统/分区的特定子集,但不是全部。例如:

mount -a /mnt/hotplugA  # mount command does not support this
mount -a /mnt/hotplugB  # mount command does not support this
umount -R /mnt/hotplugA # umount DOES support recursive unmounting

其中 hotplugA 和 hotplugB 是两个不同驱动器(我用于备份)的挂载点,并且还有多个额外的文件系统/分区可以挂载在顶层挂载点下方。

语义应该是 mount -a /mnt/hotplugA 应该挂载 /etc/fstab 指定在 /mnt/hotplugA 挂载的所有分区及以下,结果就是坐骑

/mnt/hotplugA
/mnt/hotplugA/fs1
/mnt/hotplugA/fs2
...
/mnt/hotplugA/fsN

基本上就是 /etc/fstab 指定的内容。现在,标准 mount 命令不支持我上面描述的功能(但 umount 知道如何实现,它支持 umount -R /path 并且将卸载包括 /path 及其以下的任何内容)。

对于上述需求有没有什么好的解决方案呢?

答案1

我找到了一个解决方案,其中包括创建和使用仅包含您要操作的文件系统的备用 /etc/fstab 文件:

grep PATTERN       /etc/fstab >! /tmp/fstab.$$; mount -a --fstab /tmp/fstab.$$
grep /mnt/hotplugA /etc/fstab >! /tmp/fstab.$$; mount -a --fstab /tmp/fstab.$$

已经测试并正常运行。

相关内容