安装前识别硬盘

安装前识别硬盘

我最近制作了两个脚本来负责在 Linux 中安装和卸载硬盘。我无法弄清楚的事情如下。我目前正在安装/dev/sdc1/home/media/externalHardDrive.问题是,当我在未插入硬盘的情况下插入另一个 USB 设备(例如 USB 记忆棒)时,它很可能会将 USB 记忆棒放在/dev/sdc1.我想学习一种在安装设备之前识别设备的方法,这样我就可以确保只有硬盘驱动器受到此脚本的影响。

这些是我的脚本: 卸载脚本.sh:

#!/bin/bash

MOUNT="/home/media/externalHardDrive"

if grep -qs "$MOUNT" /proc/mounts; then
  umount "$MOUNT"
  if [ $? -eq 0 ]; then
    echo "HardDrive kan veilig worden verwijderd :D"
  else
    echo "Er is iets mis gegaan, blijf overal vanaf :("
  fi
else
  echo "Er is geen HardDrive gemount op $MOUNT, deze kan daarom niet verwijderd worden!"
fi

挂载脚本.sh

#!/bin/bash

MOUNT="/home/media/externalHardDrive"

if grep -qs "$MOUNT" /proc/mounts; then
  echo "HardDrive is al gemount op $MOUNT ;)"
else
  mount /dev/sdc1 "$MOUNT"
  if [ $? -eq 0 ]; then
    echo "HardDrive is succesvol gemount :D"
  fi
fi

有人能指出我正确的方向吗?我正在 debian 服务器上运行这些脚本。

答案1

当您知道 USB 驱动器已打开时,/dev/sdc0请执行以下操作:

ls -l /dev/disk/by-uuid | grep -F /dev/sdc1

并记下时间 (HH:MM) 和 之间的数字->,假设它是xyz。这xyz是驱动器 UUID,它通常不会更改(除非您创建一个新的文件系统并且不再提供此数字作为选项)。

挂载时您可以使用该 UUID 代替设备来挂载:

mount UUID=xyz /home/media

或者将其插入条目UUID=xyz的第一列/etc/fstab,然后您就可以执行mount /home/media.

或者,您可以为文件系统分配标签(例如,使用or-L选项并以类似的方式使用。mkfs.ext4mkfs.btrfsLABEL=thelabelyouspecified

答案2

用于udev安装硬盘。它将自动执行任务并使识别变得更加容易。如果连接的设备是硬盘驱动器,$ID_ATA=1则脚本中会有一个变量。

相关内容