Comment vérifier un CD par rapport à une image ISO?

10

J'ai un CD physique gravé et l'image ISO originale de celui-ci. Aucun fichier de contrôle de référence n'a été fourni pour le contenu du CD. Comment puis-je vérifier que le CD réel est correct (correspond à l'image d'origine) et entièrement lisible?

Ivan
la source
Voulez-vous vérifier les données du CD juste après leur gravure? Parce que la plupart des outils logiciels de gravure ont une option pour vérifier les données écrites (ex Nero).
Silviu
Je sais, mais je dois faire la vérification non pas juste après la procédure de gravure, mais après un certain temps (après la fermeture du programme de gravure), peut-être même sur un autre PC. Pour autant que je sache, Nero ne propose pas d'initier une procédure de vérification indépendamment d'une procédure de gravure - sa fonction de vérification n'est qu'un module complémentaire pour la gravure et ne peut se produire que juste après la gravure. Ce que je veux, c'est insérer un CD, choisir un fichier ISO et cliquer pour vérifier ... Une autre contrainte est que je ne veux pas le faire sous Linux car je soupçonne que mon pilote Windows CD / IDE n'est pas correct.
Ivan
C'est vraiment difficile, gravez-vous un CD amorçable ou des données pures?
marguerite
Un CD amorçable ..
Ivan
Pour info, certains ISO Linux ont une option de démarrage intégrée pour vérifier leur contenu. Vous pouvez utiliser cette option et elle vérifiera tous les fichiers du disque par rapport à un fichier contenant des sommes de contrôle. Vous pouvez également md5sumvous lancer et comparer si vous ne voulez pas démarrer le CD / DVD.
Skylar Ittner

Réponses:

5

Tout d'abord, vous extrayez votre CD dans un fichier temporaire:

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

Ensuite, vous vérifiez si copy.isoet orig.isoavez la même taille, par exemple avec:

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

Si la taille est identique, c'est simple:

sha1sum orig.iso copy.iso

Mais j'ai remarqué que dans certains cas, la taille peut être légèrement différente car il y a des zéros de fin dans la copie ou l'image d'origine. Par exemple, si copy.isoest plus petit que orig.iso:

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

Bien sûr, vous devez également vérifier que les octets de fin ne sont que des zéros:

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

La première ligne, à l'exception du décalage, doit être uniquement composée de zéros. La deuxième ligne doit être un astérisque. L'astérisque évite d'afficher des lignes identiques consécutives.

Francesco Turco
la source
+1 pour les sommes de contrôle. C'est généralement la norme de facto pour comparer des fichiers (ou répertoires) et ne pas se soucier de connaître les différences (comme c'est le cas avec diff): plus minimal.
nikitautiu
ou vous pouvez faire head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumpour éviter d'avoir à faire une image du CD gravé.
Hitechcomputergeek
4

Si le fichier ISO est le même que celui utilisé pour graver le CD, voici mes deux favoris:

diff /dev/sr0 /tmp/file.iso

Compare l'image enregistrée avec le fichier image. Si vous vous sentez un peu plus masochiste, vous pouvez essayer quelque chose comme ceci:

sha1sum /dev/sr0 /tmp/file.iso

et comparer les signatures. Celui-ci est plus utile si vous avez déjà quelque part la somme SHA1. Les deux commandes liront le support jusqu'à la fin.

Si vous voulez le faire comme le suggère @ Marki555, vous devez d'abord monter le lecteur optique et l'image. Voici un script complet: (vous pouvez, bien sûr, vous dispenser du sudosi vous êtes root - une mauvaise idée, en général)

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
la source
3
cmp [-l]est mieux adapté aux fichiers binaires. Diff fonctionne mieux sur le texte.
derobert
3

Si vous avez encore l'ISO, vous pouvez les comparer octet par octet en utilisant cmp. C'est une commande assez simple et elle se termine à la première différence qu'elle trouve, donc c'est beaucoup plus rapide que de faire une somme de contrôle s'il y a effectivement une erreur au début.

cmp /dev/cdrom /path/cdrom.iso

Résultats possibles du succès:

  • pas de sortie: c'est identique et tout va bien. Vous pouvez ajouter && echo OKà la commande si le manque de sortie vous déroute.
  • cmp: EOF on cdrom.iso: il est identique mais le cdrom contient plus d'octets que votre fichier iso. Cela est généralement dû à un remplissage nul à la fin du cdrom. Comme cela n'a pas d'importance dans la pratique, c'est quand même un succès.

Résultats possibles en cas d'échec:

  • cmp: EOF on /dev/cdrom: pour une raison quelconque, les données de votre CD-ROM sont incomplètes. Peut-être que votre ISO était trop grande pour contenir un vrai CD.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: il existe une différence inattendue entre votre CD-ROM et votre image ISO.
frostschutz
la source
tandis que les rapports diff diffèrent, votre méthode cmp est géniale!
qrtLs
2

Vous pouvez vérifier que le CD est entièrement lisible en utilisant dd(par exemple dd if=/dev/cdrom of=/dev/null). Mais vous ne pouvez pas le comparer directement avec une image ISO. Chaque logiciel créera un fichier ISO légèrement différent (peut-être des en-têtes différents ou un remplissage), bien que ces différentes images ISO fournissent toutes le même contenu de CD (structure de répertoire, attributs de fichier et contenu de fichier).

Vous pouvez donc uniquement monter le CD, monter l'image ISO et la comparer au niveau du système de fichiers en utilisant une sorte d'outil de comparaison de répertoires (désolé, je n'en ai pas encore utilisé sous linux).

Marki555
la source
diff -rcomparera récursivement le contenu du répertoire.
Kevin
5
Étant donné que le CD a été gravé à partir d'une image ISO déjà préparée, il n'y a rien à construire différemment lors de la gravure, vous pouvez donc comparer directement le CD avec l'image ISO.
psusi
-1

Brasero peut le faire: Outils -> Vérifier l'intégrité ...

damian101
la source