Ripristino da supporti ottici ignorando gli errori di lettura
-
02-07-2019 - |
Domanda
Ho dei backup dei file archiviati su supporti ottici (CD e DVD). Tutti questi hanno file di recupero par2, memorizzati su supporti separati. Anche nei casi in cui non ci sono file par2, errori minori durante la lettura su un'unità ottica possono essere letti bene su un'altra unità.
Il problema è che, quando si leggono supporti difettosi, il tempo di lettura è molto, molto lungo, perché i dispositivi tendono a riprovare più volte.
La domanda è: come posso controllare il numero di tentativi (ovvero impostare su nessun tentativo o solo un tentativo)? Qualche chiamata di sistema? Una libreria che posso scaricare? Devo lavorare sul livello SCSI?
La domanda riguarda principalmente Linux, ma anche qualsiasi puntatore Win32 sarà più che benvenuto.
Soluzione
man readom
, un programma fornito con cdrecord:
-noerror
Do not abort if the high level error checking in readom found an
uncorrectable error in the data stream.
-nocorr
Switch the drive into a mode where it ignores read errors in
data sectors that are a result of uncorrectable ECC/EDC errors
before reading. If readom completes, the error recovery mode of
the drive is switched back to the remembered old mode.
...
retries=#
Set the retry count for high level retries in readom to #. The
default is to do 128 retries which may be too much if you like
to read a CD with many unreadable sectors.
Altri suggerimenti
Lo strumento migliore disponibile è dd_rhelp. Basta ??p>
dd_rhelp /dev/cdrecorder /home/myself/DVD.img
, prendi una tazza di tè e guarda la bella grafica.
Informazioni sul pacchetto rpm dd_rhelp:
dd_rhelp utilizza ddrescue sull'intero disco e tenta di ottenere il massimo dati validi prima di provare per anni su badsector. Se lasci il lavoro di dd_rhelp per un tempo infinito, ha un effetto simile a un semplice dd_rescue. Ma perché potresti non avere questo tempo infinito, dd_rhelp salta su settori danneggiati e salva dati validi. A lungo termine, analizza tutto il tuo dispositivo con dd_rescue.
Puoi Ctrl-C quando vuoi e rieseguirlo a piacimento, dd_rhelp riprende il lavoro in quanto dipende dai file di registro creati da dd_rescue. Inoltre, i progressi viene mostrato in un'immagine ASCII del dispositivo in fase di salvataggio.
L'ho usato molto da solo ed è molto, molto affidabile.
Puoi installarlo da DAG a Red Hat come le distribuzioni.
Mentre controllavo che hdparm
potesse modificare il numero di tentativi (non sembra), ho pensato che, a seconda del tipo di errore, abbassare la velocità del CD-ROM potrebbe potenzialmente ridurre il numero di errori di lettura, che potrebbero effettivamente aumentare la velocità di lettura media. Tuttavia, se alcuni settori sono completamente illeggibili, anche la riduzione della velocità del CD-ROM non aiuta.
Dato che è stato suggerito dd, dovrei notare che conosco l'esistenza e ho usato sg_dd, ma la mia domanda non riguardava i comandi (1) o (1m), ma le chiamate di sistema (2) o le librerie (3).
Modifica
Un'altra utilità della riga di comando di Linux che è di aiuto, è sdparm
. Il seguente flag sembra disabilitare i tentativi hardware:
sudo sdparm --set=RRC=0 /dev/sr0
dove / dev / sr0
è il dispositivo per l'unità ottica nel mio caso.
Dato che stai chiedendo di accedere a livello di driver, dovresti esaminare i comandi SCSI o forse un'API come ASPI. Su Windows il software VSO (gli sviluppatori di blindread / blindwrite di seguito) ha sviluppato un'API molto migliore, Patin-Couffin, che fornisce l'accesso a basso livello bloccato:
http://en.wikipedia.org/wiki/Patin-Couffin
Potrebbe iniziare. Tuttavia, alla fine della giornata, l'unità è interfacciata con i comandi SCSI, anche se in realtà è USB, SATA, ATA, IDE o altro. Potresti anche cercare i termini relativi ad ATAPI, che è stata una delle prime specifiche per questa interfaccia di livello SCSI CD-ROM.
Sarei sorpreso se non riuscissi a trovare una libreria linux adatta o un esempio di gestione dei comandi di livello inferiore usando i termini e i concetti di ricerca sopra.
Risposta precedente:
Blindread / blindwrite è stato sviluppato nel periodo d'oro degli schemi di protezione dei cd-rom spesso usando settori intenzionalmente difettosi o informazioni di errore per verificare il CD originale.
Ti permetterà di impostare un'intera serie di parametri, inclusi i tentativi. Tieni presente che l'unità CD-ROM stessa determina quante volte riprovare e non sono sicuro che ciò sia impostabile tramite software per molte (la maggior parte?) Unità CD-ROM.
È possibile copiare il disco in formato ISO, ignorando gli errori e quindi utilizzare le utilità ISO per leggere i dati.
-Adam
Dai un'occhiata all'interfaccia ASPI . Disponibile su Windows e Linux.
dd (1) è tuo amico.
dd if = / dev / cdrom of = image bs = 2352 conv = noerror, notrunc
L'unità potrebbe ancora riprovare un po ', ma non credo che migliorerai senza modificare il firmware.