Lendo apenas 1GB usando o comando dd

0

Eu tenho um disco rígido USB de 32 GB, quero saber o tempo necessário para copiar 1 GB de dados da unidade USB. Eu tentei usar dd if=/dev/sdb1 of=/dev/null

A saída é esta

dd if=/dev/sdb1 of=/dev/null bs=1G
 28+1 records in
 28+1 records out
 30751983616 bytes (31 GB) copied, 331.297 s, 92.8 MB/s

a abordagem usada por mim está correta ou estou fazendo errado? Eu não posso usar outra ferramenta, eu tenho que usar apenas o comando dd.

    
por Bidyut 18.11.2016 / 07:54

2 respostas

4

Seu comando está incorreto, você diz dd para ler em pedaços de 1 GB, mas um número ilimitado de vezes. Para medir apenas o tempo gasto para ler 1 GB, você precisa informar dd para ler somente um bloco:

dd if=/dev/sdb1 of=/dev/null bs=1G count=1

Observe que o armazenamento em buffer fará com que o comando seja executado mais rapidamente se o dispositivo tiver sido lido anteriormente.

    
por 18.11.2016 / 08:15
2

Primeiro, como @jiliagre disse, você está medindo o tempo de transferência de toda a partição (31 Gb), não 1 Gb. Isso é mostrado pela última linha da sua saída:

30751983616 bytes (31 GB) copied, 331.297 s, 92.8 MB/s

Segundo, como você está escrevendo para /dev/null e, consequentemente, ocultando os dados, ele fornece apenas os tempos de leitura da sua unidade USB.

O tempo real de transferência de E / S será limitado pela capacidade de velocidade de gravação do dispositivo de destino e, provavelmente, será mais lento.

Além disso, depende de quais dados você está copiando. 1 Gb de arquivos pequenos é copiado mais devagar que um único arquivo de 1 Gb e ocupa mais espaço no dispositivo devido ao tamanho do arquivo de alocação.

    
por 18.11.2016 / 08:11

Tags