Як перевірити компакт-диск на зображенні ISO?


10

У мене є фізичний записаний компакт-диск та оригінальне зображення ISO. Файли контрольної суми не містилися для вмісту компакт-диска. Як перевірити, чи справжній компакт-диск правильний (відповідає оригінальному зображенню) та повністю читабельний?


Ви хочете перевірити дані на компакт-диску відразу після їх запису? Оскільки в більшості програмних засобів, що записуються, є можливість перевірити письмові дані (наприклад, Nero).
Сільвіу

Я знаю, але мені потрібно робити перевірку не відразу після процедури запису, а через деякий час (після того, як програма запису вже була закрита), можливо, навіть на іншому ПК. Наскільки я знаю, Nero не пропонує ініціювати процедуру перевірки незалежно від процедури запису - це центр підтвердження є лише надбудовою для запису і може статися лише після запису. Я хочу вставити компакт-диск, вибрати файл ISO і натиснути, щоб перевірити ... Ще одне обмеження полягає в тому, що я не хочу робити це під Linux, оскільки я підозрюю, що у мене драйвер CD / IDE Windows не в порядку.
Іван

Це дійсно складно, ви записуєте завантажувальний компакт-диск чи чисті дані?
ромашка

Завантажувальний компакт-диск ..
Іван

FYI, деякі Linux ISO мають вбудований варіант завантаження для перевірки їх вмісту. Ви можете скористатися цією опцією, і вона перевірить усі файли диска на файл, що містить контрольні суми. Ви також можете запустити md5sumсебе і порівняти, якщо ви не хочете завантажувати CD / DVD.
Skylar

Відповіді:


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 для контрольних сум. Це, як правило, фактичний стандарт для порівняння файлів (або каталогів), а не піклування про знання відмінностей (як це буває з різницею): більш мінімальні.
nikitautiu

або ви можете зробити це, head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumщоб уникнути необхідності робити зображення записаного компакт-диска.
Hitechcomputergeek

4

Якщо у вас все ще є ISO, ви можете порівняти їх за байтами за допомогою байтів cmp. Це досить проста команда, і вона виходить з першої виявленої різниці, тож це значно швидше, ніж робити контрольну суму, якщо насправді на початку є помилка.

cmp /dev/cdrom /path/cdrom.iso

Можливі результати успіху:

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

Можливі результати відмови:

  • cmp: EOF on /dev/cdrom: чомусь дані на вашому CDROM є неповними. Можливо, ваш ISO був занадто великий, щоб вмістити справжній компакт-диск.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: є якась несподівана різниця між вашим CDROM та вашим зображенням ISO.

в той час, як різні звіти "різняться", ваш метод cmp є приголомшливим!
qrtLs

3

Якщо файл 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]краще підходить для двійкових файлів. Diff найкраще працює над текстом.
дероберт

2

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

Тож ви можете лише змонтувати компакт-диск, змонтувати образ ISO і порівняти його на рівні файлової системи, використовуючи якийсь інструмент порівняння каталогів (вибачте, я ще не використовував жодного в Linux).


diff -rбуде порівнювати вміст каталогу рекурсивно.
Кевін

5
Оскільки компакт-диск був записаний із вже підготовленого ISO-зображення, при записі нічого не можна будувати інакше, тому ви можете безпосередньо порівняти компакт-диск із зображенням iso.
psusi

0

Brasero може це зробити: Інструменти -> Перевірити цілісність ...


Brasero - це графічний додаток (Gnome), доступний у будь-якому дистрибутиві Linux. Встановіть його, після чого перейдіть Правка -> Плагіни та перевірте контрольну суму файлу (встановлена ​​за замовчуванням). Дивіться тут
Мілан Керслагер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.