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.

È stato utile?

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

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top