Question

J'ai des sauvegardes de fichiers archivés sur des supports optiques (CD et DVD). Tous ont des fichiers de récupération par2, stockés sur des supports distincts. Même en l'absence de fichiers par2, des erreurs mineures lors de la lecture sur un lecteur optique peuvent être lues correctement sur un autre lecteur.

Le problème, c’est que lors de la lecture d’un support défectueux, le temps de lecture est très long, car les périphériques ont tendance à réessayer plusieurs fois.

La question qui se pose est la suivante: comment puis-je contrôler le nombre de tentatives (c'est-à-dire défini sur aucune tentative ou une seule tentative)? Un appel système? Une bibliothèque que je peux télécharger? Dois-je travailler sur la couche SCSI?

La question concerne principalement Linux, mais tout pointeur Win32 sera également le bienvenu.

Était-ce utile?

La solution

man readom , programme fourni avec 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.

Autres conseils

Le meilleur outil disponible est dd_rhelp. Juste

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

, prenez une tasse de thé et regardez les jolis graphismes.

Les informations sur le package rpm dd_rhelp:

  

dd_rhelp utilise ddrescue sur l’ensemble du disque et tente de collecter le maximum   données valides avant d'essayer pendant des siècles sur les mauvais secteurs. Si vous quittez le travail dd_rhelp   pour un temps infini, son effet est similaire à celui d'un simple dd_rescue. Mais parce que   vous ne pouvez pas avoir ce temps infini, dd_rhelp saute par-dessus des secteurs défectueux et sauve   données valides. À long terme, il analyse tout votre appareil avec dd_rescue.

     

Vous pouvez le faire Ctrl-C à tout moment et le réexécuter à volonté, dd_rhelp reprend la   dépend des fichiers journaux créés par dd_rescue. En outre, les progrès   s'affiche dans une image ASCII de votre périphérique en cours de sauvetage.

Je l'ai beaucoup utilisé moi-même et est très, très réaliste.

Vous pouvez l'installer de DAG vers Red Hat comme des distributions.

Tout en vérifiant si hdparm pouvait modifier le nombre de tentatives (ne semble pas l'être), j'ai pensé que, selon le type d'erreur, réduire le débit du CD-ROM pourrait réduire le nombre. des erreurs de lecture, ce qui pourrait en fait augmenter la vitesse de lecture moyenne. Cependant, si certains secteurs sont complètement illisibles, même réduire le débit du CD-ROM n’aidera pas.

Puisque dd a été suggéré, je dois noter que je connais l’existence et que j’ai utilisé sg_dd, mais ma question ne portait pas sur les commandes (1) ou (1m), mais sur les appels système (2) ou les bibliothèques (3).

EDIT

Un autre utilitaire de ligne de commande Linux utile est sdparm . L'indicateur suivant semble désactiver les nouvelles tentatives matérielles:

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

/ dev / sr0 est le périphérique du lecteur optique dans mon cas.

Puisque vous vous interrogez sur l'accès au niveau du pilote, vous devriez vous pencher sur les commandes SCSI, ou peut-être sur une API de type ASPI. Sous Windows, les logiciels VSO (les développeurs de blindread / blindwrite ci-dessous) ont développé une meilleure API, Patin-Couffin, qui fournit un accès de bas niveau verrouillé:

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

Cela pourrait vous aider à démarrer. Cependant, à la fin de la journée, le lecteur est interfacé avec les commandes SCSI, même s'il s'agit en fait d'USB, SATA, ATA, IDE ou autre. Vous pouvez également rechercher des termes liés à ATAPI, l’une des premières spécifications de cette interface de couche SCSI sur CD-ROM.

Je serais surpris de ne pas pouvoir trouver une bibliothèque Linux appropriée ou un exemple d'utilisation des commandes de niveau inférieur à l'aide des termes et concepts de recherche ci-dessus.

Ancienne réponse:

Blindread / blindwrite a été développé à l’époque des systèmes de protection de CD-ROM utilisant souvent des secteurs intentionnellement défectueux ou informations d'erreur pour vérifier le CD d'origine.

Cela vous permettra de définir toute une série de paramètres, y compris les tentatives. N'oubliez pas que le lecteur de CD-ROM lui-même détermine le nombre de fois à réessayer, et je ne suis pas sûr que cela puisse être réglé via le logiciel pour la plupart des lecteurs (la plupart?).

Vous pouvez copier le disque au format ISO en ignorant les erreurs, puis utiliser les utilitaires ISO pour lire les données.

-Adam

Jetez un coup d’œil à l’interface ASPI . Disponible sur Windows et Linux.

dd (1) est votre ami.

dd if = / dev / cdrom de = image bs = 2352 conv = noerror, notrunc

Le lecteur peut encore essayer un peu, mais je ne pense pas que vous obtiendrez mieux sans modifier le firmware.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top