如何找到闪存盘的实际 (dd) 大小?

Ale*_*lex 6 linux size flash-memory block-device

当我将闪存盘放入读卡器并使用 制作映像时dd,我会看到磁盘的实际大小,例如以下示例中的 512483328 字节:

1000944+0 records in
1000944+0 records out
512483328 bytes (512 MB) copied, 33.0091 s, 15.5 MB/s
Run Code Online (Sandbox Code Playgroud)

是否可以在不实际复制数据的情况下获得相同的数字?

Mar*_*rco 14

使用 sgdisk

您可以使用sgdisk打印详细信息:

sgdisk --print <device>

[…]
Disk /dev/sdb: 15691776 sectors, 7.5 GiB
Logical sector size: 512 bytes
[…]
Run Code Online (Sandbox Code Playgroud)

当您将扇区数与扇区大小相乘时,您会得到与dd.

/sys直接使用

您还可以直接从/sys以下位置获取这些数字:

扇区数:/sys/block/<device>/size
扇区大小:/sys/block/<device>/queue/logical_block_size

这是一种计算大小的方法:

sectors=$(cat /sys/block/sdb/size)
bs=$(cat /sys/block/sdb/queue/logical_block_size)
echo $(( $sectors * $bs ))        --- OR ---        echo "$sectors * $bs" | bc
Run Code Online (Sandbox Code Playgroud)

使用 udisks

udisks直接输出信息。据报道size

udisks --show-info <device> | grep size
Run Code Online (Sandbox Code Playgroud)

使用 blockdev

blockdev --getsize64 <device>
Run Code Online (Sandbox Code Playgroud)

/proc/partitions

grep ' sdb$' /proc/partitions
Run Code Online (Sandbox Code Playgroud)

(以千比字节表示的数字)。