Wie überprüfe ich eine CD anhand eines ISO-Images?


10

Ich habe eine physisch gebrannte CD und das Original-ISO-Image davon. Für den CD-Inhalt wurden keine Referenzprüfsummen-Dateien bereitgestellt. Wie überprüfe ich, ob die tatsächliche CD korrekt (entspricht dem Originalbild) und vollständig lesbar ist?


Wollen Sie die Daten auf der CD direkt nach dem Brennen überprüfen? Weil die meisten brennenden Softwaretools die Option haben, geschriebene Daten zu überprüfen (ex Nero).
Silviu

Ich weiß, aber ich muss die Überprüfung nicht direkt nach dem Brennvorgang durchführen, sondern nach einiger Zeit (nachdem das Brennprogramm bereits geschlossen wurde), möglicherweise sogar auf einem anderen PC. Soweit ich weiß, bietet Nero nicht an, ein Überprüfungsverfahren unabhängig von einem Brennvorgang einzuleiten. Die Überprüfungsfunktion ist nur ein Add-On zum Brennen und kann erst unmittelbar nach dem Brennen erfolgen. Ich möchte eine CD einlegen, eine ISO-Datei auswählen und zur Bestätigung klicken ... Eine weitere Einschränkung ist, dass ich dies unter Linux nicht tun möchte, da ich vermute, dass mein Windows-CD / IDE-Treiber nicht in Ordnung ist.
Ivan

Das ist wirklich schwierig. Brennen Sie eine bootfähige CD oder reine Daten?
Gänseblümchen

Eine bootfähige CD ..
Ivan

Zu Ihrer Information, einige Linux-ISOs verfügen über eine integrierte Startoption, um ihren Inhalt zu überprüfen. Sie können diese Option verwenden und alle Dateien der Disc mit einer Datei vergleichen, die Prüfsummen enthält. Sie können auch md5sumselbst ausführen und vergleichen, wenn Sie die CD / DVD nicht starten möchten.
Skylar Ittner

Antworten:


5

Zuerst rippen Sie Ihre CD in eine temporäre Datei:

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

Dann prüfen Sie, ob copy.isound orig.isohaben die gleiche Größe, zum Beispiel mit:

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

Wenn die Größe identisch ist, ist es einfach:

sha1sum orig.iso copy.iso

Ich habe jedoch festgestellt, dass die Größe in bestimmten Fällen geringfügig abweichen kann, da entweder in der Kopie oder im Originalbild nachgestellte Nullen vorhanden sind. Zum Beispiel, wenn copy.isokleiner als orig.iso:

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

Natürlich sollten Sie auch überprüfen, ob die nachfolgenden Bytes nur Nullen sind:

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

Die erste Zeile mit Ausnahme des Versatzes sollte nur Nullen sein. Die zweite Zeile sollte ein Sternchen sein. Das Sternchen soll vermeiden, dass aufeinanderfolgende identische Zeilen angezeigt werden.


+1 für Prüfsummen. Dies ist normalerweise der De-facto- Standard für den Vergleich von Dateien (oder Verzeichnissen) und für die Unkenntnis der Unterschiede (wie dies bei diff der Fall ist): minimaler.
Nikitautiu

oder Sie können head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumvermeiden, dass Sie ein Image der gebrannten CD erstellen müssen.
Hitechcomputergeek

4

Wenn die ISO-Datei dieselbe ist, die zum Brennen der CD verwendet wurde, sind hier meine beiden Favoriten:

diff /dev/sr0 /tmp/file.iso

Vergleicht das aufgenommene Bild mit der Bilddatei. Wenn Sie sich etwas masochistischer fühlen, können Sie Folgendes ausprobieren:

sha1sum /dev/sr0 /tmp/file.iso

und vergleichen Sie die Signaturen. Dies ist nützlicher, wenn Sie die SHA1-Summe bereits irgendwo haben. Beide Befehle lesen das Medium bis zum Ende.

Wenn Sie es so machen möchten, wie es @ Marki555 vorschlägt, sollten Sie zuerst sowohl das optische Laufwerk als auch das Image mounten. Hier ist ein vollständiges Skript: (Sie können natürlich auf das verzichten, sudowenn Sie root sind - eine schlechte Idee im Allgemeinen)

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]ist besser für Binärdateien geeignet. Diff funktioniert am besten mit Text.
Derobert

3

Wenn Sie noch über die ISO verfügen, können Sie diese byteweise mit vergleichen cmp. Es ist ein Befehl, der einfach genug ist und bei dem ersten festgestellten Unterschied beendet wird. Es ist also erheblich schneller als eine Prüfsumme zu erstellen, wenn tatsächlich frühzeitig ein Fehler auftritt.

cmp /dev/cdrom /path/cdrom.iso

Mögliche Ergebnisse für den Erfolg:

  • Keine Ausgabe: Es ist identisch und alles in Ordnung. Sie können && echo OKan den Befehl anhängen , wenn Sie der Mangel an Ausgabe verwirrt.
  • cmp: EOF on cdrom.iso: Es ist identisch, aber das CD-ROM hat mehr Bytes als Ihre ISO-Datei. Dies ist normalerweise auf eine Nullpolsterung am Ende des CD-ROM zurückzuführen. Da dies in der Praxis keine Rolle spielt, ist es immer noch ein Erfolg.

Mögliche Ergebnisse bei Misserfolg:

  • cmp: EOF on /dev/cdrom: Aus irgendeinem Grund sind die Daten auf Ihrer CD-ROM unvollständig. Möglicherweise war Ihre ISO zu groß, um auf eine echte CD zu passen.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: Es gibt einen unerwarteten Unterschied zwischen Ihrer CD-ROM und Ihrem ISO-Image.

Während Diff-Berichte "unterschiedlich" sind, ist Ihre CMP-Methode fantastisch!
qrtLs

2

Sie können überprüfen, ob die CD vollständig lesbar ist, indem Sie dd(zum Beispiel dd if=/dev/cdrom of=/dev/null) verwenden. Sie können es jedoch nicht direkt mit einem ISO-Image vergleichen. Jede Software erstellt leicht unterschiedliche ISO-Dateien (möglicherweise unterschiedliche Header oder Auffüllungen), obwohl diese unterschiedlichen ISO-Images alle denselben CD-Inhalt (Verzeichnisstruktur, Dateiattribute und Dateiinhalt) bereitstellen.

Sie können also nur die CD mounten, das ISO-Image mounten und es auf Dateisystemebene vergleichen, indem Sie ein Verzeichnisvergleichstool verwenden (sorry, ich habe noch kein Linux verwendet).


diff -rvergleicht den Verzeichnisinhalt rekursiv.
Kevin

5
Da die CD aus einem bereits vorbereiteten ISO-Image gebrannt wurde, muss beim Brennen nichts anders erstellt werden, sodass Sie die CD direkt mit dem ISO-Image vergleichen können.
Psusi

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.