Como posso encontrar o tamanho real (dd) de um disco flash?

5

Quando coloco um disco flash em um leitor de cartão e faço uma imagem com dd , vejo o tamanho real do disco, como 512483328 bytes no exemplo a seguir:

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

É possível obter o mesmo número sem realmente copiar os dados?

    
por Alex 09.01.2014 / 13:02

2 respostas

10

Usando sgdisk

Você pode usar sgdisk para imprimir informações detalhadas:

sgdisk --print <device>

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

Ao multiplicar o número de setores com o tamanho do setor, você obtém a contagem exata de bytes que deve corresponder à saída de dd .

Usando /sys diretamente

Você também pode obter esses números diretamente de /sys :

Número de setores: /sys/block/<device>/size
Tamanho do setor: /sys/block/<device>/queue/logical_block_size

Aqui está uma maneira de calcular o tamanho:

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

Usando udisks

udisks gera a informação diretamente. É relatado como size :

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

Usando blockdev

blockdev --getsize64 <device>

De /proc/partitions

grep ' sdb$' /proc/partitions

(número expresso em kibibytes).

    
por 09.01.2014 / 13:19
0

Isso é algo que eu costumo usar:

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

Por exemplo:

% echo $((gb=$((mb=$((kb=1024))*kb))*kb))
1073741824
    
por 02.03.2014 / 02:43