Как проверить CD по образу ISO?

10

У меня есть физический сожженный компакт-диск и оригинальный образ ISO. Для содержимого компакт-диска не предоставлены контрольные файлы контрольных сумм. Как проверить, что настоящий CD является правильным (соответствует исходному образу) и полностью читаемым?

Иван
источник
Вы хотите проверить данные на компакт-диске сразу после его записи? Потому что большинство программ для записи дисков имеют возможность проверять записанные данные (например, Nero).
Сильвиу
Я знаю, но мне нужно сделать проверку не сразу после процедуры записи, а через некоторое время (после того, как программа записи уже была закрыта), возможно, даже на другом ПК. Насколько я знаю, Nero не предлагает инициировать процедуру проверки независимо от процедуры записи - это средство проверки является лишь дополнением для записи и может происходить только сразу после записи. Я хочу вставить компакт-диск, выбрать файл ISO и щелкнуть, чтобы проверить ... Другое ограничение заключается в том, что я не хочу делать это под Linux, так как подозреваю, что мой драйвер Windows CD / IDE не подходит.
Иван
Это действительно сложно, вы записываете загрузочный компакт-диск или чистые данные?
маргаритка
Загрузочный CD ..
Иван
К вашему сведению, некоторые ISO-образы Linux имеют встроенную опцию загрузки для проверки их содержимого. Вы можете использовать эту опцию, и она проверит все файлы диска по файлу, содержащему контрольные суммы. Вы также можете запустить md5sumсебя и сравнить, если вы не хотите загружать CD / DVD.
Скайлар Итнер

Ответы:

5

Сначала вы копируете свой CD во временный файл:

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

Затем проверьте , если copy.isoи orig.isoимеют одинаковый размер, например , с помощью :

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

Если размер идентичен, это легко:

sha1sum orig.iso copy.iso

Но я заметил, что в некоторых случаях размер может немного отличаться, потому что в копии или исходном изображении есть конечные нули. Например, если copy.isoменьше чем orig.iso:

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

Конечно, вы также должны проверить, что завершающие байты - это только нули:

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

Первая строка, за исключением смещения, должна содержать только нули. Вторая строка должна быть звездочкой. Звездочка должна избегать показа последовательных идентичных линий.

Франческо Турко
источник
+1 для контрольных сумм. Обычно это стандарт де-факто для сравнения файлов (или каталогов) и не забота о знании различий (как в случае с diff): более минимальный.
nikitautiu
или вы можете сделать, head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumчтобы избежать необходимости делать образ сгоревшего компакт-диска.
Hitechcomputergeek
4

Если файл ISO тот же, что и для записи компакт-диска, то вот мои два фаворита:

diff /dev/sr0 /tmp/file.iso

Сравнивает записанное изображение с файлом изображения. Если вы чувствуете себя немного более мазохистски, вы можете попробовать что-то вроде этого:

sha1sum /dev/sr0 /tmp/file.iso

и сравнить подписи. Это более полезно, если у вас уже есть сумма SHA1. Обе команды будут читать носитель до конца.

Если вы хотите сделать это так, как предлагает @ Marki555, вам нужно сначала смонтировать как оптический привод, так и образ. Вот полный сценарий: (вы можете, конечно, обойтись без, sudoесли вы root - плохая идея, в общем)

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]лучше подходит для бинарных файлов. Дифф лучше всего работает с текстом.
Дероберт
3

Если у вас все еще есть ISO, вы можете сравнить их побайтно, используя cmp. Это достаточно простая команда, которая завершается при первом обнаруженном разнице, поэтому она значительно быстрее, чем создание контрольной суммы, если на самом деле в самом начале обнаружена ошибка.

cmp /dev/cdrom /path/cdrom.iso

Возможные результаты в случае успеха:

  • нет выхода: он идентичен и все в порядке. Вы можете добавить && echo OKкоманду, если нехватка вывода смущает вас.
  • cmp: EOF on cdrom.iso: он идентичен, но в cdrom больше байтов, чем в вашем iso-файле. Обычно это происходит из-за заполнения нулями в конце компакт-диска. Поскольку на практике это не имеет значения, это все же успех.

Возможные результаты при неудаче:

  • cmp: EOF on /dev/cdrom: по какой-то причине данные на вашем CDROM неполные. Может быть, ваш ISO был слишком большим, чтобы вместить настоящий CD.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: есть некоторая неожиданная разница между вашим CDROM и вашим ISO-образом.
frostschutz
источник
в то время как отчеты о различиях «различаются», ваш метод cmp великолепен!
14
2

Вы можете проверить, что CD полностью читается с помощью dd(например dd if=/dev/cdrom of=/dev/null). Но вы не можете сравнить его непосредственно с ISO-изображением. Каждое программное обеспечение будет создавать немного разные ISO-файлы (возможно, несколько разных заголовков или отступов), хотя все эти разные ISO-образы будут обеспечивать одинаковое содержимое CD (структура каталогов, атрибуты файлов и содержимое файлов).

Таким образом, вы можете только смонтировать компакт-диск, смонтировать ISO-образ и сравнить его на уровне файловой системы, используя какой-либо инструмент сравнения каталогов (извините, я еще не использовал ни одного в linux).

Marki555
источник
diff -rбудет сравнивать содержимое каталога рекурсивно.
Кевин
5
Поскольку компакт-диск был записан из уже подготовленного ISO-образа, при записи ничего не может быть построено иначе, поэтому вы можете напрямую сравнить компакт-диск с ISO-образом.
psusi
-1

Brasero может сделать это: Инструменты -> Проверить целостность ...

damian101
источник