Verificando se existem dados em um dispositivo de armazenamento presumivelmente vazio

3

Então, digamos que você tenha completado um passe completo de:

dd if=/dev/zero of=/dev/sdX bs=1M

Depois, você gostaria de ter certeza de que o destino realmente foi zerado (ignorando as mensagens de confirmação de dd e não apenas pesquisando o início ou o fim do dispositivo). Supondo que você teria que ler todo o disco - eu usaria isso:

dd if=/dev/sdX bs=1M | grep -P '[^\x00]'

No entanto, como isso funciona com a canalização do stdout , eventualmente isso cai com um erro dizendo que a operação ficou sem memória. Então, não tem utilidade.

É claro que criar uma imagem inteira do disco inteiro e salvá-lo não é uma opção. Mas, talvez, fazer isso enquanto, de alguma forma, pule 0x00 rapidamente - essa seria uma das soluções ...

Idéias?

    
por XXL 07.01.2012 / 17:09

2 respostas

8

Existe um dispositivo, /dev/zero em um sistema linux que sempre retorna zero quando lido.

Então, que tal comparar seu disco rígido com este dispositivo:

cmp /dev/sdX /dev/zero

Se tudo estiver bem em zerar o disco rígido, ele será encerrado com:

cmp: EOF on /dev/sdb

informando que os dois arquivos são os mesmos até chegar ao final do disco rígido. Se houver um bit não zero no disco rígido, o cmp informará onde ele está no arquivo.

Se você tiver o pacote pv instalado,

pv /dev/sdX | cmp /dev/zero

fará a mesma coisa com uma barra de progresso para mantê-lo entretido enquanto verifica sua unidade (o EOF agora estará em - em vez de sdX ).

    
por 07.01.2012 / 18:46
1

De link :

od substituirá execuções da mesma coisa com * , para que você possa facilmente usá-lo para verificar bytes diferentes de zero:

$ sudo od /dev/disk2 | head
0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000
    
por 08.04.2016 / 23:22

Tags