Como verificar um CD em uma imagem ISO?

8

Eu tenho um CD queimado físico e a imagem ISO original dele. Nenhum arquivo de soma de verificação de referência foi fornecido para o conteúdo do CD. Como faço para verificar se o CD está correto (corresponde à imagem original) e totalmente legível?

    
por Ivan 27.05.2012 / 20:42

4 respostas

4

Se o arquivo ISO é o mesmo usado para gravar o CD, aqui estão os meus dois favoritos:

diff /dev/sr0 /tmp/file.iso

Compara a imagem gravada com o arquivo de imagem. Se você se sentir um pouco mais masoquista, poderia tentar algo assim:

sha1sum /dev/sr0 /tmp/file.iso

e compare as assinaturas. Este é mais útil se você já tiver a soma SHA1 em algum lugar. Ambos os comandos lerão o meio até o fim.

Se você quiser fazer do jeito que o @ Marki555 sugere, você vai querer montar a unidade óptica e a imagem primeiro. Aqui está um script completo: (você pode, é claro, dispensar o sudo se você for root - uma idéia ruim, em geral)

sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}
    
por 28.05.2012 / 01:28
4

Primeiro, copie seu CD para um arquivo temporário:

dd if=/dev/sr0 of=copy.iso

Em seguida, você verifica se copy.iso e orig.iso têm o mesmo tamanho, por exemplo, com:

stat -c '%s %n' orig.iso copy.iso

Se o tamanho for idêntico, é fácil:

sha1sum orig.iso copy.iso

Mas notei que, em certos casos, o tamanho pode ser ligeiramente diferente, pois há zeros à direita na cópia ou na imagem original. Por exemplo, se copy.iso for menor que orig.iso :

sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum

É claro que você também deve verificar se os bytes à direita são apenas zero:

od -j $(stat -c %s copy.iso) orig.iso

A primeira linha, exceto o offset, deve ser apenas zeros. A segunda linha deve ser um asterisco. O asterisco é para evitar mostrar linhas idênticas consecutivas.

    
por 11.09.2012 / 14:51
2

Você pode verificar se o CD é totalmente legível usando dd (por exemplo, dd if=/dev/cdrom of=/dev/null ). Mas você não pode compará-lo diretamente com uma imagem ISO. Cada software criará um arquivo ISO ligeiramente diferente (talvez alguns cabeçalhos ou preenchimentos diferentes), embora essas diferentes imagens ISO forneçam o mesmo conteúdo de CD (estrutura de diretório, atributos de arquivo e conteúdo de arquivo).

Então você só pode montar o CD, montar a imagem ISO e compará-la no nível do sistema de arquivos usando algum tipo de ferramenta de comparação de diretórios (desculpe, eu não usei nenhum ainda no linux).

    
por 27.05.2012 / 20:48
1

Se você ainda tiver o ISO, poderá compará-lo byte por byte usando cmp . É um comando bastante simples e sai na primeira diferença que encontrar, por isso é consideravelmente mais rápido do que fazer uma soma de verificação se realmente houver um erro no início.

cmp /dev/cdrom /path/cdrom.iso

Possíveis resultados no sucesso:

  • sem saída: é idêntico e tudo OK. Você pode anexar && echo OK ao comando se a falta de saída confundir você.
  • cmp: EOF on cdrom.iso : é idêntico, mas o cdrom tem mais bytes que o seu arquivo iso. Isso geralmente é devido a zero preenchimento no final do cdrom. Como isso não importa na prática, ainda é um sucesso.

Resultados possíveis no fracasso:

  • cmp: EOF on /dev/cdrom : por algum motivo, os dados no seu CD-ROM estão incompletos. Talvez o seu ISO fosse grande demais para caber em um CD real.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780 : existe alguma diferença inesperada entre o seu CD-ROM e a sua imagem ISO.
por 24.07.2014 / 00:19