检测块设备是本地磁盘还是可移动U盘

Posted

技术标签:

【中文标题】检测块设备是本地磁盘还是可移动U盘【英文标题】:Detect if a block device is a local disk or a removable usb disk 【发布时间】:2014-10-27 14:13:12 【问题描述】:

有什么方法可以检测块设备(例如 /dev/sda 或 /dev/sdc)是否与本地磁盘(我的意思是 scsi 或 sata)或可移动 USB 磁盘相关?

我正在编写一个 shell 脚本,它必须只检测本地磁盘块设备,不包括任何可移动磁盘。

谢谢!

【问题讨论】:

这可能对unix.com/shell-programming-and-scripting/…有帮助 这可能会被改编:***.com/a/5119606/42610 【参考方案1】:

使用lshw:

lshw -class disk -class storage

然后查找bus info 字符串。

【讨论】:

【参考方案2】:

您可以使用udev,Linux 设备管理器。

查询每个块设备会显示一些关于它的信息,包括总线,您可以使用这些信息来辨别设备是否是可移动 USB 设备。

这是脚本:

for device in /sys/block/sd*; do
  device_info="$(udevadm info --query=property --path=$device)"

  device_name=$(echo "$device_info" | perl -ne 'print "$1" if /^DEVNAME=(.*)/')
  device_bus=$(echo "$device_info" | perl -ne 'print "$1" if /^ID_BUS=(.*)/')

  echo "Device $device_name bus: $device_bus"
done

这是一个示例结果:

Device /dev/sda bus: ata
Device /dev/sdb bus: ata
Device /dev/sdc bus: usb

【讨论】:

以上是关于检测块设备是本地磁盘还是可移动U盘的主要内容,如果未能解决你的问题,请参考以下文章

win32 disk imager使用后u盘容量恢复

OTPUB知识课堂:云存储和本地存储之间的区别

如何更改本地磁盘图标?

本地磁盘显示0字节可用数据的恢复方法

虚拟化vmware esxi 安装在u盘上,却无法识别本地磁盘,是否只能安装在本地磁盘中

怎样把一个文件夹映射成一个盘符?