フラッシュディスクをカードリーダーに挿入してdd
でイメージを作成すると、次の例の512483328バイトのように、ディスクの実際のサイズが表示されます。
1000944+0 records in
1000944+0 records out
512483328 bytes (512 MB) copied, 33.0091 s, 15.5 MB/s
実際にデータをコピーせずに同じ番号を取得することは可能ですか?
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
(キビバイトで表される数)。
これは私が通常使うものです:
% echo $((gb=$((mb=$((kb=1024))*kb))*kb))
例えば:
% echo $((gb=$((mb=$((kb=1024))*kb))*kb))
1073741824