如何挂载多个分区

如何挂载多个分区

在 Linux 中,有没有一种方法可以使用单个命令挂载磁盘的多个分区,甚至所有分区?是否有一个mount命令接受的选项可以促进这一点?我运行的是 Fedora 18;如果我尝试mount /dev/sda* /media/sda*操作失败。

或者,您能否建议我可以将其组合起来以供将来使用的脚本?

我遇到过一些可能有用的帖子,其中提到编写 udev 规则;不过,我不确定这是否有用,因为(据我所知)我的主硬盘上的分区已经设置了这些分区 - 通过查看我的可访问驱动器/分区的侧边栏列表可以明显看出这一点文件管理器。

为了澄清这一点,我只是想做一些类似“/dev/{sda1,sda2,...}”的事情,其中​​每一个都会以相同的名称安装到自己的目录中。

答案1

mount命令一次只会映射一个设备,因此无论您选择什么方法都必须为每个分区调用 mount 。

/proc/partitions将为您提供检测到的内容的列表:

# cat /proc/partitions
major minor  #blocks  name

   8        0 1465138584 sda
   8        1 1465134488 sda1
   8       32 1465138584 sdc
   8       33 1465134488 sdc1
   8       16 1465138584 sdb
   8       17 1465134488 sdb1
   8       48 1465138584 sdd
   8       49 1465134488 sdd1
   8       64  156290904 sde
   8       65      96358 sde1
   8       66    4000185 sde2
   8       67          1 sde3
   8       69    2000061 sde5
   8       70   14996646 sde6
   8       71  135197527 sde7

这是fdisk -l获取信息的地方。你可以用它来做类似的事情:

awk '$4 ~ /^sda[0-9]+/{print $4}' /proc/partitions | while read dev; do
    if findmnt /dev/$dev >/dev/null; then
        echo "/dev/$dev is already mounted.  Skipping."
        continue
    elif findmnt /media/$dev >/dev/null; then
        echo "/media/$dev is already a mount point.  Skipping /dev/$dev."
        continue
    fi
    mount /dev/$dev /media/$dev
done

答案2

首先,一个分区可以挂载到多个位置。

出于您自己的目的,我怀疑 mount 本身是否支持这一点。但你绝对可以使用自己的脚本,

#!/bin/bash

for x in $*; do
    echo mount "$x" "/media/${x##*/}"
done

并启动它(echo运行之前删除)

./XX.sh /dev/sda* /dev/sdb*

PS:你应该考虑udisks,这会将分区挂载到/media/label_of_drive

答案3

如果您要在启动时启动分区,那么您可以将它们添加到/etc/fstab.man fstab查看配置文件中各行的所有不同选项。各列应按如下方式组织。

<file system>   <dir>   <fs-type>   <mount-options>   <dump> <pass>

如果您不打算安装它们,请考虑使用udisksudiskie。不能将两个分区挂载到同一目录。不过,您可以在sub-directory已安装设备的内部安装一个。

答案4

当前 fstab 的备份:

#cp -a /etc/fstab /etc/fstab.bk

处理输出lsblk-f使用sedawk并将输出重定向到 fstab:

#lsblk -f|sed 's/\[SWAP]/swap /g'|awk '/(-)/{printf"UUID=%-36s %-23s %-7s defaults 
           0 0\n", $3, ($4==""?mnt"NR:$4), $2}'>/etc/fstab

相关内容