Come verificare un CD con un'immagine ISO?


10

Ho un CD masterizzato fisicamente e l'immagine ISO originale di esso. Non sono stati forniti file di checksum di riferimento per il contenuto del CD. Come posso verificare se il CD attuale è corretto (corrisponde all'immagine originale) e completamente leggibile?


Intendi verificare i dati sul CD subito dopo la masterizzazione? Perché la maggior parte degli strumenti software di masterizzazione ha un'opzione per controllare i dati scritti (ex Nero).
Silviu,

Lo so, ma devo fare il controllo non subito dopo la procedura di masterizzazione ma dopo un po 'di tempo (dopo che il programma di masterizzazione era già chiuso), forse anche su un altro PC. Per quanto ne so Nero non offre di avviare una procedura di verifica indipendentemente da una procedura di masterizzazione: la sua funzione di verifica è solo un componente aggiuntivo per la masterizzazione e può avvenire solo dopo la masterizzazione. Quello che voglio è inserire un CD, scegliere un file ISO e fare clic per verificare ... Un altro vincolo è che non voglio farlo sotto Linux poiché sospetto che il mio driver CD / IDE di Windows non sia ok.
Ivan,

È davvero difficile, stai masterizzando un CD avviabile o dati puri?
margherita,

Un CD avviabile ..
Ivan,

Cordiali saluti, alcuni ISO di Linux hanno un'opzione di avvio integrata per verificarne il contenuto. Puoi usare quell'opzione e controllerà tutti i file del disco rispetto a un file contenente checksum. Puoi anche eseguire md5sumte stesso e confrontarlo, se non vuoi avviare il CD / DVD.
Skylar Ittner,

Risposte:


5

Per prima cosa, copi il tuo CD in un file temporaneo:

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

Quindi controlla se copy.isoe orig.isohanno le stesse dimensioni, ad esempio con:

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

Se la dimensione è identica, è facile:

sha1sum orig.iso copy.iso

Ma ho notato che in alcuni casi le dimensioni possono essere leggermente diverse perché ci sono zero finali nella copia o nell'immagine originale. Ad esempio, se copy.isoè inferiore a orig.iso:

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

Ovviamente dovresti anche verificare che i byte finali siano solo zero:

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

La prima riga, ad eccezione dell'offset, dovrebbe essere solo zero. La seconda riga dovrebbe essere un asterisco. L'asterisco serve per evitare di mostrare linee identiche consecutive.


+1 per i checksum. Questo di solito è lo standard di fatto per confrontare file (o directory) e non preoccuparsi di conoscere le differenze (come nel caso di diff): più minimale.
nikitautiu,

oppure puoi fare head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumper evitare di dover creare un'immagine del CD masterizzato.
Hitechcomputergeek il

4

Se il file ISO è lo stesso utilizzato per masterizzare il CD, ecco i miei due preferiti:

diff /dev/sr0 /tmp/file.iso

Confronta l'immagine registrata con il file di immagine. Se ti senti un po 'più masochista, potresti provare qualcosa del genere:

sha1sum /dev/sr0 /tmp/file.iso

e confronta le firme. Questo è più utile se hai già la somma SHA1 da qualche parte. Entrambi i comandi leggeranno il supporto fino alla fine.

Se vuoi farlo come suggerisce @ Marki555, dovrai prima montare sia l'unità ottica che l'immagine. Ecco uno script completo: (puoi, ovviamente, rinunciare a sudose sei root - una cattiva idea, in generale)

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]è più adatto per i file binari. Diff funziona meglio sul testo.
derobert,

3

Se hai ancora gli ISO, puoi confrontarli byte per byte usando cmp. È un comando abbastanza semplice ed esce dalla prima differenza che trova, quindi è molto più veloce che fare un checksum se in realtà c'è un errore all'inizio.

cmp /dev/cdrom /path/cdrom.iso

Possibili risultati sul successo:

  • nessun output: è identico e tutto ok. È possibile aggiungere && echo OKal comando se la mancanza di output ti confonde.
  • cmp: EOF on cdrom.iso: è identico ma il cdrom ha più byte del tuo file iso. Questo di solito è dovuto allo zero padding alla fine del cdrom. Dal momento che non importa nella pratica, è ancora un successo.

Possibili esiti in caso di fallimento:

  • cmp: EOF on /dev/cdrom: per qualche motivo i dati sul tuo CD-ROM sono incompleti. Forse il tuo ISO era troppo grande per adattarsi a un vero CD.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: c'è una differenza inaspettata tra il tuo CD-ROM e l'immagine ISO.

mentre diff segnala 'differ', il tuo metodo cmp è fantastico!
qrtLs

2

È possibile verificare che il CD sia completamente leggibile utilizzando dd(ad esempio dd if=/dev/cdrom of=/dev/null). Ma non puoi confrontarlo direttamente con un'immagine ISO. Ogni software creerà un file ISO leggermente diverso (forse alcune intestazioni o padding diversi), sebbene queste diverse immagini ISO forniranno tutti lo stesso contenuto del CD (struttura della directory, attributi del file e contenuto del file).

Quindi puoi solo montare il CD, montare l'immagine ISO e confrontarla a livello di filesystem usando un qualche tipo di strumento di confronto di directory (scusami, non ne ho ancora usato nessuno su Linux).


diff -rconfronterà ricorsivamente i contenuti della directory.
Kevin,

5
Dal momento che il cd è stato masterizzato da un'immagine iso già preparata, non c'è nulla da costruire in modo diverso durante la masterizzazione, quindi è possibile confrontare direttamente il cd con l'immagine iso.
psusi,

-1

Brasero può farlo: Strumenti -> Verifica integrità ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.