我正在构建一个脚本,让用户选择 USB 磁盘作为备份目标。这个想法是创建一个跨越整个设备的分区。lsusb
给出我打算呈现给用户的供应商 ID 和名称。
我显然只想列出磁盘,没有其他设备。我还需要找出/dev
用户选择的磁盘的设备名称,以便在其上创建分区。我已经查看/dev/disk/
并/sys/
尝试在那里的各种符号链接中找到交叉引用。我也无法利用lsblk
并df
实现我的目标。我想知道:
- 如何使用
lsusb
提供的信息来确定哪些 USB 设备是磁盘? - 如何使用
lsusb
提供的信息来获取/dev
特定设备的设备名称?
您的问题的答案在某种程度上取决于将使用什么机制来触发脚本。
假设脚本是从某种备份程序中调用的,而该程序在连接 USB 设备时不会立即调用(例如,如果您从udev规则触发它就是这种情况),那么您可以使用它
udevadm info
来收集所有信息需要。想法如下:
udevadm info --query=all /dev/sdX
每个设备节点,您就可以确定其中哪些是 USB 驱动器,因为输出将具有一行说明因此,通过解析
udevadm
usinggrep
或类似的输出,您将能够为您的目的收集所有必要的信息。