Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Médias optiques : lecteurs et graveurs de CDs, DVDs et Blu-Ray sous GNU/Linux

Éléments de Gestion, test et récupération des CDs, DVDs, Blu-Ray, et des lecteurs et graveurs sous GNU/Linux.

Outils de test pour CDs et DVDs

QPxToolQPxTool

CD/DVD quality checker

Les adeptes éclairés de la gravure sous Windows connaissent CD-DVD Speed, qui est un outil de benchmark destiné à tester les capacités d'un lecteur/graveur de CD ou DVD (taux de transfert, temps de recherche, etc..). QPxTool est un logiciel similaire sous Linux ; il dispose des mêmes fonctionnalités que CD-DVD Speed, sans oublier les tests de qualité des médias vierges ou gravés.
La dernière version disponible (10-2008) est la 0.6.1, normalement incluse dans les dépots de votre distribution favorite. Merci à belgium-gravure.net !

Limitations :
QPxTool dépende du lecteur utilisé ; tous les lecteurs ne sont pas capables de lire les Q-Checks, et tous ne sont pas supportés par QPxTool. Actuellement, la plupart des modèles LiteOn, NEC (et Optiarc), Pioneer et Plextor sont supportés.

Régler les lecteurs optiques

hdparm et médias optiques IDE/PATA

Quelques commandes qui peuvent (ou pas) etre utiles :
Note: le fichier de device correspondant a mon lecteur optique est /dev/sr0 (/dev/hda sur les noyaux plus anciens).

  • Abaisser la vitesse du lecteur :
    # hdparm -E 2 /dev/sr0 : Très pratique pour lire des cd-audios, qui ne necessitent pas une grande vitesse, ca permet de ne pas entendre le lecteur. Ça ne permet pas en revanche d'ameliorer la qualite de la lecture (ou tres peu) car le lecteur fait automatiquement le changement de vitesse s'il n'arrive pas a lire le media (en theorie)
  • Activer le support 32 bits :
    hdparm -c3 /dev/sr0 : Augmente de pratiquement 50% la vitesse de lecture de mon lecteur de dvd
  • Tester la vitesse du lecteur :
    hdparm -t /dev/sr0
  • Activer le support DMA :
    hdparm -d1 /dev/sr0

Récupération de médias optiques abîmés

Le meilleur moyen de ne pas perdre de données (et/ou de temps pour les récupérer) est 1) de savoir choisir ses supports How To Choose CD/DVD Archival Media, et 2) de créer un fichier de correction d'erreurs AVANT d'avoir un soucis, par exemple avec dvdisaster.
ps : si j'appliquais cette règle moi-même, j'aurai pas perdu des gigas de vidéos et sauvé NN heures :-|

Note à propos des médias Verbatim : "If the box/spindle/cakebox the discs come in don’t say they’re manufactured with Verbatim’s proprietary Azo dye (sometimes called Advanced Azo, sometimes not, depending on the product) then they aren’t Verbatim media at all and should be avoided as they may not meet typical home archival standards."

Buffer I/O error on device sr1, logical block 58348
end_request: I/O error, dev sr1, sector 233392

Aïe ! On dirait la redoutée erreur de lecture sur un périphérique... Comment récupérer ces données qu'on croyait bien stockées sur ce disque, CD / DVD ou autre clé USB ?

Sur un média endommagé, c'est souvent qu'une (toute) petite partie d'un fichier qui n'est plus lisible. Sur une vidéo par exemple, quelques secondes peuvent être illisibles, mais on peut très bien lire jusqu'à et après l'erreur (avec mplayer -ss [minutes:secondes] par exemple). Le problème des outils de copie classiques (graphiques), est qu'ils stoppent carrément en cas d'erreur (imaginez si ils le faisaient pas...). Les utilitaires spéciaux ne pourront --peut-être-- pas lire le secteur endommagé, mais ils copieront tout ce qui est lisible... et même ce qui ne l'est plus avec le contrôle des données préventif.

GNU ddrescue

À ne pas confondre avec son cousin dd_rescue, ddrescue est écrit en C (rapide, sans sous processus) et son algorithme serait plus performant.

GNU ddrescue est un utilitaire de récupération de données. Il copie les données depuis un fichier ou un périphérique bloc (disque dur, cdrom, etc) vers un autre, en faisant tout pour parvenir à lire les données en cas d'erreurs de lecture.
Ddrescue ne découpe pas le fichier en sortie si on ne le lui demande pas. Aussi, chaque fois qu'on la lance sur le même fichier, il tente de combler les trous éventuels.
Les opérations de base sont entièrement automatiques : On a pas à attendre l'erreur, arrêter le programme, lire le log et le relancer en mode inversé.
Le manuel et des exemples concrets sont accessibles avec : info ddrescue.

Disponible à l'installation sur la plupart des distributions.

Exemple simple : récupérer une vidéo illisible depuis un CDRom abîmé

Commandes identiques pour un DVD ou un CD.

  1. Récupérer le plus possible de données à la première passe, assez rapide :
    $ ddrescue --verbose --no-split --block-size=2048 /dev/[device] dvd_rescued.iso dvd_rescued.log
    En fonction du résultat affiché (ex :
    rescued: 1083 MB, errsize: 3610 MB, errors: 145, là c'est mal parti !), passez à la seconde passe ou, si vous êtes plus chanceux, testez l'ISO obtenue : Si vous parvenez à la lire sans erreurs, alors c'est bon.
  2. Seconde passe :
    $ ddrescue -n -b2048 /dev/[device] dvd_rescued.iso dvd_ddrescue.log
    Va tenter d'aller plus loin dans sa copie sur l'image ISO du dvd (tout ce qui est lisible quoi).
  3. Troisème passe (long!) :
    $ ddrescue -d -b2048 /dev/[device] dvd_rescued.iso dvd_ddrescue.log
    Va s'acharner sur les secteurs deffectueux et tenter de compléter l'image ISO avec tout ce qui était illisible précédemment. Le résultat ici :
    Initial status (read from logfile)
    rescued: 724633 kB, errsize: 7077 kB, errors: 21
    7077 Ko d'erreur au départ.
    Current status
    rescued: 731252 kB, errsize: 458 kB, current rate: 165 kB/s
    458 Ko d'erreur après le second passage, c'est acceptable dans mon cas (quelques frames en moins dans un fichier vidéo :)
    Finished
  4. L'image ISO est montable facilement avec :
    # mount -o loop -t iso9660 /là_où_est_l/image.iso /un_repertoire_non_monté

Si ça n'a pas suffit, voyez "Réglages fins" ci-dessous.
Si vous voulez récupérer les données d'un disque dur, voyez le guide de poloastucien (ci-dessous), ou lisez le manuel (man ddrescue et info ddrescue).

Guides en ligne pour débuter

Réglages fins de ddrescue

dd_rescue

Comme dd, dd_rescue copie des données d'un fichier ou d'un bloc depuis un périphérique (disque dur, média optique, ...) vers un autre. On peut spécifier des positions de fichiers (appelées seek et Skip avec dd). Il présente plusieurs différences avec dd, dont : dd_rescue ne stoppe pas lors d'erreurs sur le fichier lû (à moins qu'on ne spécifie un nombre maximum d'erreurs. Il utilise 2 tailles de bloc, une large (doux) et une petite (dur).

Disponible à l'installation sur la plupart des distributions.

dd_rhelp : script Bash automatisant l'usage de dd_rescue

L'auteur de dd_rhelp lui-même recommande d'essayer d'abord ddrescue, plus récent et plus "propre" (écrit en C quand dd_rhelp est un "dirty" script Bash).

dd_rhelp permet à tout utilisateur de récupérer rapidement et facilement les données récupérables de tout disque endommagé (secteurs défectueux). Il s'appue sur toutes les possibilités de dd_rescue (copie inversée, setting start and stop offset accordingly to previously rescued data) pour récupérer le maximum de données possible avant de s'attaquer aux secteurs défectueux. Automatisé, il peut être interrompu à tout moment (Ctrl C) et relancé à tout moment (ou une instance de dd_rescue) puisqu'il s'appuie sur le fichier de logs dd_rescue. Il affiche une barre d'indication du processus de restauration.

dd_rhelp allows users to retrieve, quickly and easily, recoverable data from any device with bad sectors. It will copy it using dd_rescue in all the appropriate ways (reverse copy, setting start and stop offset accordingly to previously rescued data) to recover the maximum data possible before spending time on bad sectors. It is straightforward to use, supports ctrl-c at anytime, can resume a job (or standalone dd_rescue job) by parsing the dd_rescue logs, and displays a nice ASCII bar showing rescue progress.

Protection et récupération de médias optiques avec dvdisaster

Procure une marge de sécurité contre la perte de données dûe à l'âge ou aux rayures sur CD & DVD. EDIT : et Blu-Ray à partir de la version 0.72x (après avril 2009), qui ajoute également la lecture brute (raw) et les scans C2 sur le média optique.

C'est un très bon petit programme pour scanner les CDs et DVDs abîmés. La version graphique affiche la vitesse de lecture, ainsi qu'un diagramme affichant les secteurs avec une couleur montrant les bons et les mauvais.
DVDisaster peut créer un fichier de correction d'erreur permettant de restaurer les disques endommagés ! Pour celà il suffit de créer le fichier ECC.
Requiert un noyau Linux 2.6.7 ou plus.
www.dvdisaster.com

Note personnelle : le procédé de récupération sans ECC peut marcher, mais il *peut* prendre un temps considérable (pendant lequel on pert l'accès au lecteur ou graveur utilisé). Dans le cas de rayures, je préfère commencer par une réparation manuelle à base de "crème réparatrice" (lol) ou autres SkipDoctor... La situation est bien meilleure si on a créé le fichier de correction d'erreur.

  • Prévention & protection : Contrôle des données préventif. Permet de s'assurer une récupération des données en cas de problème avec ses médias optiques.
  • Récupération : des données sur les médias optiques abîmés, sous certaines conditions. Puissant, mais moins sûr qu'en prévention et 100 fois plus lent.
  • Guide : srlinuxx le présente sur tuxmachine.org (02/07/2008).
  • dvdisaster site officiel @ sourceforge.net
  • gars de Boot Land disent ce qu'ils ont pensé de dvdisaster, comparé à des solutions commerciales (genre Arrowkey/Infinadyne Accuburn-R) ou encore plus efficaces telle que le polissage du CD avec de la pâte à dentifrice (vous savez, le machin sensé abraser la plaque dentaire et les tâches toutes moches qui se forment sans cesse sur nos beaux chicots !). Je vous rassure il est pas nécessaire de le faire 3 fois par jour... ;)
Trop cool pour Internet Explorer