在 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>
如果您不打算安装它们,请考虑使用udisks
或udiskie
。不能将两个分区挂载到同一目录。不过,您可以在sub-directory
已安装设备的内部安装一个。
答案4
当前 fstab 的备份:
#cp -a /etc/fstab /etc/fstab.bk
处理输出lsblk-f使用sed和awk并将输出重定向到 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