Frage

Ich habe Backups von Dateien in optischen Medien (CDs und DVDs) archiviert. Diese haben alle par2 Recovery-Dateien, gespeichert auf separaten Medien. Selbst in Fällen, in denen es keine par2 Dateien, kleinere Fehler, wenn sie auf ein optisches Laufwerk liest, kann auf einem anderen Laufwerk in Ordnung gelesen werden.

Die Sache ist, wenn fehlerhafte Medien zu lesen, die Lesezeit ist sehr, sehr lang, da Geräte mehrere Male wiederholen neigen.

Die Frage ist: Wie kann ich die Anzahl der Wiederholungen zu steuern (dh ohne Wiederholungen gesetzt oder nur einen Versuch)? Einige Systemaufruf? Eine Bibliothek, die ich herunterladen kann? Muss ich auf der SCSI-Schicht arbeiten?

Die Frage ist, in erster Linie über Linux, aber alle Win32-Zeiger werden mehr als willkommen zu.

War es hilfreich?

Lösung

man readom, ein Programm, das mit cdrecord kommt:

   -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.

Andere Tipps

Das beste Werkzeug ist verfügbar, dd_rhelp. Nur

dd_rhelp /dev/cdrecorder /home/myself/DVD.img

, eine Tasse Tee nehmen und die schöne Grafik sehen.

Die dd_rhelp rpm-Paket Info:

  

dd_rhelp verwendet ddrescue auf Ihrer gesamten CD, und versucht, das Maximum zu sammeln   gültige Daten vor für Alter auf badsectors versuchen. Wenn Sie dd_rhelp Arbeit verlassen   für unendlich viel Zeit, es hat eine ähnliche Wirkung wie eine einfache dd_rescue. Aber weil   Sie können diese unendliche Zeit nicht haben, dd_rhelp über fehlerhafte Sektoren springt und Rettungs   gültige Daten. Auf lange Sicht, analysiert es das Gerät mit dd_rescue.

     

Sie können Strg-C, wann immer Sie wollen, und Rerun-es nach Belieben, dd_rhelp nimmt die   Job, da es hängt von den Protokolldateien dd_rescue erstellt. Darüber hinaus Fortschritte   wird in einem ASCII-Bild Ihres Geräts angezeigt gerettet werden.

Ich habe es viel selbst verwendet und ist sehr, sehr realiable.

Sie können es von DAG zu Red Hat installieren wie Distributionen.

Bei der Überprüfung, ob hdparm die Anzahl der Wiederholungen ändern könnte (scheint nicht so), dachte ich, dass, abhängig von der Art des Fehlers, könnte die CD-ROM Geschwindigkeit senkt möglicherweise die Anzahl der Lesefehler reduzieren, die eigentlich könnte erhöht die durchschnittliche Lesegeschwindigkeit. Wenn jedoch einige Sektoren vollständig unlesbar sind, dann auch die CD-ROM Geschwindigkeit senken wird nicht helfen.

Da dd vorgeschlagen wurde, soll ich anmerken, dass ich von der Existenz weiß und habe sg_dd verwendet, aber meine Frage war nicht über Befehle (1) oder (1m), aber über Systemaufrufe (2) oder Bibliotheken (3).

EDIT

Ein weiteres Linux-Befehlszeilenprogramm, das von Hilfe ist, ist sdparm. Die folgende Flag scheint Hardware-Wiederholungen zu deaktivieren:

sudo sdparm --set=RRC=0 /dev/sr0

Dabei gilt /dev/sr0 die Vorrichtung für das optische Laufwerk in meinem Fall ist.

Da Sie über Treiberebene Zugriff fragen, sollten Sie suchen in SCSI-Befehle, oder vielleicht ein ASPI wie API. Unter Windows VSO Software (Entwickler von Blindread / Blindwrite unten) hat eine viel bessere API, Patin-Couffin entwickelt, die den Zugriff niedrige Pegel gesperrt bieten:

http://en.wikipedia.org/wiki/Patin-Couffin

Das könnte Ihnen den Start. Doch am Ende des Tages, das Laufwerk mit SCSI-Befehlen angeschlossen ist, auch wenn es eigentlich USB, SATA, ATA, IDE oder auf andere Weise. Sie könnten nachschlagen Begriffe auch auf ATAPI bezogen, die für diesen CD-ROM SCSI-Layer-Schnittstelle eine der ersten Spezifikationen waren.

Ich wäre überrascht, wenn Sie keine passende Linux-Bibliothek oder ein Beispiel für den Umgang mit den unteren Level-Befehle unter Verwendung der obigen Begriffe und Konzepte finden.


ältere Antwort:

Blindread / Blindwrite wurde in der Blütezeit der CD-ROM Schutzsysteme häufig entwickelt absichtlich fehlerhafte Sektoren oder Fehlerinformationen die Original-CD zu überprüfen.

Es erlaubt Ihnen, eine ganze Reihe von Parametern einzustellen, einschließlich Wiederholungen. Beachten Sie, dass das CD-ROM-Laufwerk selbst, wie oft bestimmt, erneut zu versuchen, und ich bin nicht sicher, dass diese über die Software für viele (die meisten?) CD-ROM-Laufwerke einstellbar ist.

Sie können die Festplatte ISO-Format kopieren, um die Fehler zu ignorieren, und dann ISO-Dienstprogramme verwenden, um die Daten zu lesen.

-Adam

Werfen Sie einen Blick auf die ASPI Schnittstelle. Verfügbar auf Windows und Linux.

dd (1) ist dein Freund.

dd if = / dev / cdrom of = Bild bs = 2352 conv = noerror, notrunc

Der Antrieb noch etwas wiederholen kann, aber ich glaube nicht, dass Sie ohne Änderung der Firmware besser erhalten werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top