Como verificar um CD com uma imagem ISO?

10

Eu tenho um CD gravado 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 verifico se o CD atual está correto (corresponde à imagem original) e totalmente legível?

Ivan
fonte
Você pretende verificar os dados no CD logo após a gravação? Como a maioria das ferramentas de software em gravação tem uma opção para verificar dados escritos (ex Nero).
Silviu 27/05
Eu sei, mas preciso fazer a verificação não logo após o procedimento de gravação, mas depois de algum tempo (após o programa de gravação já estar fechado), talvez até em um PC diferente. Até onde eu sei, o Nero não se oferece para iniciar um procedimento de verificação independentemente de um procedimento de gravação - seu recurso de verificação é apenas um complemento para gravação e pode acontecer apenas após a gravação. O que eu quero é inserir um CD, escolher um arquivo ISO e clicar para verificar ... Outra restrição é que não quero fazer isso no Linux, pois suspeito que meu driver de CD / IDE do Windows não esteja ok.
Ivan
Isso é realmente difícil, você está gravando um CD inicializável ou dados puros?
daisy
Um CD de arranque ..
Ivan
Para sua informação, alguns ISOs do Linux têm uma opção de inicialização interna para verificar seu conteúdo. Você pode usar essa opção e ela verificará todos os arquivos do disco em relação a um arquivo que contém somas de verificação. Você também pode executar md5sume comparar, se não quiser inicializar o CD / DVD.
Skylar Ittner

Respostas:

5

Primeiro, você copia seu CD para um arquivo temporário:

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

Então você verifica se copy.isoe orig.isotem 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 porque há zeros à direita na cópia ou na imagem original. Por exemplo, se copy.isofor menor que orig.iso:

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

Obviamente, você também deve verificar se os bytes à direita são apenas zeros:

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

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

Francesco Turco
fonte
+1 para somas de verificação. Geralmente, esse é o padrão de fato para comparar arquivos (ou diretórios) e não se importar em conhecer as diferenças (como é o caso do diff): mais mínimo.
Nikitautiu 11/09/12
ou você pode fazer head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumpara evitar a necessidade de criar uma imagem do CD gravado.
precisa saber é o seguinte
4

Se o arquivo ISO for o mesmo usado para gravar o CD, aqui estão 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, tente algo assim:

sha1sum /dev/sr0 /tmp/file.iso

e compare as assinaturas. Esse é 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 da maneira sugerida por Marki555, monte primeiro a unidade óptica e a imagem. Aqui está um script completo: (é claro, você pode dispensar o sudoque é root - uma má ideia, 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}
Alexios
fonte
3
cmp [-l]é mais adequado para arquivos binários. Diff funciona melhor em texto.
derobert
3

Se você ainda possui o ISO, pode compará-los byte byte usando cmp. É um comando bastante simples e sai na primeira diferença que encontra, 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 sobre o sucesso:

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

Resultados possíveis em caso de falha:

  • cmp: EOF on /dev/cdrom: por algum motivo, os dados do seu CD-ROM estão incompletos. Talvez o seu ISO fosse muito grande para caber em um CD real.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: existe alguma diferença inesperada entre o CD-ROM e a imagem ISO.
frostschutz
fonte
enquanto os relatórios diff 'diferem', seu método cmp é incrível!
qrtLs 23/01
2

Você pode verificar se o CD está 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 imagens ISO diferentes forneçam o mesmo conteúdo do CD (estrutura do diretório, atributos do arquivo e conteúdo do arquivo).

Portanto, 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ório (desculpe, eu ainda não usei nenhum no linux).

Marki555
fonte
diff -rcomparará o conteúdo do diretório recursivamente.
27412 Kevin
5
Como o CD foi gravado a partir de uma imagem ISO já preparada, não há nada a ser construído de maneira diferente durante a gravação, para que você possa comparar diretamente o CD com a imagem ISO.
Psusi 28/05
-1

A Brasero pode fazer isso: Ferramentas -> Verificar integridade ...

damian101
fonte