web-dev-qa-db-ja.com

フラッシュディスクの実際の(dd)サイズを確認するにはどうすればよいですか。

フラッシュディスクをカードリーダーに挿入してddでイメージを作成すると、次の例の512483328バイトのように、ディスクの実際のサイズが表示されます。

1000944+0 records in
1000944+0 records out
512483328 bytes (512 MB) copied, 33.0091 s, 15.5 MB/s

実際にデータをコピーせずに同じ番号を取得することは可能ですか?

6
Alex

sgdiskの使用

sgdiskを使用して、詳細情報を印刷できます。

sgdisk --print <device>

[…]
Disk /dev/sdb: 15691776 sectors, 7.5 GiB
Logical sector size: 512 bytes
[…]

セクター数とセクターサイズを掛けると、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

udisksの使用

udisksは、情報を直接出力します。 sizeとして報告されます:

udisks --show-info <device> | grep size

blockdevの使用

blockdev --getsize64 <device>

/proc/partitionsから

grep ' sdb$' /proc/partitions

(キビバイトで表される数)。

14
Marco

これは私が通常使うものです:

% echo $((gb=$((mb=$((kb=1024))*kb))*kb))

例えば:

% echo $((gb=$((mb=$((kb=1024))*kb))*kb))
1073741824
0
mikeserv