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?


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.


+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}

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.

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).


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 ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.