如何知道 /dev/sdX 是连接的 USB 还是 HDD?

dai*_*isy 24 bash administration hardware hard-disk

我如何知道是本地 HDD 还是 USB 密钥?我更喜欢一种没有root权限的方法。/dev/sdX

好的,udevadm帮了大忙:

对于本地硬盘:

udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
Run Code Online (Sandbox Code Playgroud)

对于 USB 密钥:

udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
Run Code Online (Sandbox Code Playgroud)

Ale*_*ios 16

有几种方法可以在没有 root 权限的情况下进行判断,其中许多方法很棘手/hacky:

使用/dev/disk/by-id

find /dev/disk/by-id/ -lname '*sdX'
Run Code Online (Sandbox Code Playgroud)

如果它的响应类似于/dev/disk/by-id/usb-blah-blah-blah,则它是一个 USB 磁盘。其他前缀包括atadmmemstickscsi,等。

使用/dev/disk/by-path没有显着不同:

find /dev/disk/by-path/ -lname '*sdX'
Run Code Online (Sandbox Code Playgroud)

你会得到类似的东西/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0。这显示了通向磁盘的设备路径。在这种情况下,粗略的路径是 PCI ? USB ?盘。(注意-usb-)。

使用 udev(我运行 Debian。我udevadm所在的/sbin不在我的上$PATH——你的可能在别处,在你的 上或下$PATH):

/sbin/udevadm info --query=all --name=sdX | grep ID_BUS
Run Code Online (Sandbox Code Playgroud)

您将获得设备所在的总线类型。删除 以| grep ID_BUS获取完整的信息列表(您可能需要添加|less)。

如果您已经lshw安装,惠更斯的回答也可能有效:

lshw -class disk -class storage | less
Run Code Online (Sandbox Code Playgroud)

并查看磁盘的输出。在 中less,尝试/sdX 并查看前面的几行bus info——第一行只会说scsi@…,但前几行会更有启发性。但是,您确实应该以超级用户身份运行它,因此它可能不合适。(症状:在我尝试过的笔记本电脑上,它列出了 SATA 磁盘,但没有sudo列出USB 磁盘 — 运行时同时列出了两者)

还有其他一些,或多或少比这些更直接。


don*_*sti 11

你可以使用lsblk

lsblk -do 名称,tran
NAME TRAN
sda  sata
sdb  sata
sdd  usb
Run Code Online (Sandbox Code Playgroud)

where -dor--nodeps表示不打印 slaves 和-o name,tranor--output name,tran表示仅列出设备名称和设备传输类型。添加rm到输出列列表以查看哪些设备是可移动的(1如果true):

lsblk --nodeps --output NAME,TRAN,RM
NAME TRAN   RM
sda  sata    0
sdb  sata    0
sdd  usb     1
Run Code Online (Sandbox Code Playgroud)


Huy*_*ens 10

我知道一个解决方案,但遗憾的是,它需要 root 权限。无论如何,您可能仍然会发现它很有用:

sudo lshw -class disk -class storage
Run Code Online (Sandbox Code Playgroud)

对于每个设备,它将打印逻辑名称(例如,/dev/sda)和总线信息,在 USB 设备的情况下,这些信息类似于“usb@1:2”。

示例输出:

[...]
  *-storage
       description: SATA controller
       physical id: d
       bus info: pci@0000:00:0d.0
       configuration: driver=ahci latency=64
[...]
     *-disk:0
          description: ATA Disk
          physical id: 0
          bus info: scsi@2:0.0.0
          logical name: /dev/sda
[...]
  *-scsi
       physical id: 3
       bus info: usb@1:2
       configuration: driver=usb-storage
     *-disk
          description: SCSI Disk
          physical id: 0.0.0
          bus info: scsi@6:0.0.0
          logical name: /dev/sdc
[...]
Run Code Online (Sandbox Code Playgroud)