Cabeça em arquivos muito grandes

3

Eu tenho 2 arquivos muito grandes (27G e 40G), que são a saída do comando dd em um disco rígido com falha. Eu queria comparar os primeiros bytes para ver se os 27G bytes são o início / substring do 40G.

Eu queria usar o comando head . Como esses arquivos são binários, usei -c argument:

# ls -ahl *.dd
-rw-r--r-- 1 root root 40G May 17 20:16 mac.dd
-rw-r--r-- 1 root root 27G May 18 09:47 mac2.dd

Tentando obter 1K de dados brutos:

# head -c1K mac.dd
(returns nothing)

Tentando obter 1K com hexdump:

# head -c1K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400
(end)

Tentando obter 10K com hexdump:

# head -c10K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0002800
(end)

Embora:

Tentando obter 100 bytes de dados brutos em / bin / ls:

# head -c100 /bin/ls 
ELF>�H@@p�@8    @@@@@@�

Tentando obter 100 bytes de dados hexadecimais em / bin / ls:

# head -c100 /bin/ls | hexdump
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0002 003e 0001 0000 4880 0040 0000 0000
0000020 0040 0000 0000 0000 b670 0001 0000 0000
0000030 0000 0000 0040 0038 0009 0040 001c 001b
0000040 0006 0000 0005 0000 0040 0000 0000 0000
0000050 0040 0040 0000 0000 0040 0040 0000 0000
0000060 01f8 0000                              
0000064

Os resultados no mac2.dd são exatamente os mesmos, mas parece que a saída não é realmente o que eu estou esperando, então não acho que isso signifique que os arquivos começam com os mesmos dados. Cabeça no binário /bin/ls é o que eu esperava.

Eu não entendo essa saída de dd files. Alguém pode me explicar isso, por favor?

Obrigado.

    
por Thibault 18.05.2015 / 10:07

1 resposta

4

Estou respondendo a mim mesmo.

Eu descobri de este post , que o " * " no hexdump significa "igual à linha anterior". O que significa que todo o meu arquivo dd é preenchido com dd chars.

Eu posso explicitar com:

head -c1000 mac.dd | hexdump -v
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

Ou de uma forma mais curta:

# hexdump -v -n1000 mac.dd
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

Então, agora, eu sei que o %code% dump está cheio de nada.

Obrigado por qualquer um que tenha lido o meu problema até aqui.

    
por 18.05.2015 / 14:47

Tags