Ho un file ISO, che ho masterizzato su un CD. Ora come posso verificare se il CD è stato creato correttamente? Vorrei un comando che calcola la somma hash che posso usare per verificare con la somma hash che calcolo sul file ISO. Idealmente il comando dovrebbe:
- Funziona indipendentemente dal file ISO:cioè, non voglio tenere un elenco di hash sum per ogni file nel disco, o ricordare il numero di blocchi qualunque
- Sii relativamente breve:un comando di una riga è ottimo, una catena di comandi lunga due righe va bene, uno script che si estende su una pagina non lo è
- Sii abbastanza efficiente:ad esempio,
dd
il disco torna a un file, quindi eseguimd5sum
sul file è inaccettabile
Se non c'è risposta che non soddisfi tutti apprezzerò anche la corrispondenza più vicina. Ancora meglio se puoi dirmi perché non è così semplice.
Risposta accettata:
Il problema di base è che vogliamo prendere l'md5sum delle stesse identiche informazioni che erano originariamente sull'ISO. Quando scrivi l'ISO su un CD, è probabile che sia presente uno spazio vuoto all'estremità del disco, che inevitabilmente cambia l'md5sum. Quindi, la via più breve:
md5sum /dev/cdrom
non funziona . Ciò che funziona (ed è comune nella documentazione online) è solo leggere il numero esatto di byte dal dispositivo e quindi eseguire il md5sum
. Se conosci il numero di byte puoi fare qualcosa come:
dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum
dove 'xxxxx' è la dimensione dell'iso in byte.
Se non conosci il numero di byte fuori mano, ma hai ancora gli iso sul tuo disco, puoi ottenerli usando ls facendo qualcosa come il seguente (tratto da qui):
dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum
Ci sono molte altre costruzioni a una linea che dovrebbero funzionare. Nota che in ogni caso stiamo usando dd
per leggere i byte dal disco, ma non li stiamo inviando a un file, ma li stiamo consegnando immediatamente a md5sum.
Possibili miglioramenti della velocità possono essere apportati eseguendo alcuni calcoli per utilizzare una dimensione del blocco maggiore (il bs=
nel dd
comando).