dd mostra um número aleatório de registros in / out [duplicados]

3

Estou escrevendo algumas imagens de volta para dispositivos de bloco, com dd e obtendo uma saída muito estranha que nunca vi antes.

# xz -dc goren.img.xz | dd bs=1M of=/dev/storage2/goren
35+2475166 records in
35+2475166 records out
21474836480 bytes (21 GB) copied, 222.912 s, 96.3 MB/s
# xz -dc gronn.img.xz | dd bs=1M of=/dev/storage2/gronn
50+2413782 records in
50+2413782 records out
21474836480 bytes (21 GB) copied, 233.478 s, 92.0 MB/s
# xz -dc grummle.img.xz | dd bs=1M of=/dev/storage2/grummle
63+2443466 records in
63+2443466 records out
21474836480 bytes (21 GB) copied, 222.898 s, 96.3 MB/s
# xz -dc hozen.img.xz | dd bs=1M of=/dev/storage2/hozen
19+2556787 records in
19+2556787 records out
21474836480 bytes (21 GB) copied, 250.989 s, 85.6 MB/s

A saída que esperava ver em cada caso (e o que obtive ao criar os arquivos de imagem) é:

20480+0 records in
20480+0 records out

Tanto quanto eu posso dizer as imagens estão sendo escritas corretamente, embora eu esteja preocupado com o número de registros mostrados. Isso obviamente não está correto em nenhum dos casos. Embora, como eu disse, as imagens escritas correspondam aos originais, passem por verificações de sistema de arquivos, etc.

Estou usando o Fedora 21 x86_64 com o coreutils 8.22.

    
por Michael Hampton 06.05.2015 / 23:32

1 resposta

5

Essas são leituras incompletas. Ele deve desaparecer se você adicionar iflag=fullblock .

Por padrão, dd aceitará blocos menores de um canal, se não houver mais dados disponíveis. Com o iflag, dd esperará até que um bloco completo de dados seja reunido ou EOF.

No que diz respeito à consistência dos dados, não deve haver nenhum problema, portanto, você deve obter resultados corretos de qualquer forma.

A pergunta é por que você está usando dd , mas seu exemplo pode ser reduzido para:

xz -dc goren.img.xz > /dev/storage2/goren
    
por 06.05.2015 / 23:37

Tags