ddrescue, dd_rescue, myrescue : récupérer ses données après un crash disque

Logo

L’orthographe dd?rescue ci-dessous est volontaire. Par endroit j’ai laissé quelques retours chariot sans saut de ligne. C’est un effet de style volontaire! pour mettre en évidence un bout de phrase.

dd_rescue 1.99 est sorti le 9 septembre 2015.
GNU ddrescue 1.20 est sorti le 14 septembre 2015.

dd?rescue sert à récupérer vos données suite à un crash du support physique (disque dur, CDROM, etc.). Il copie les données bloc par bloc en créant une image disque, ce qui le rend utilisable avec tous les systèmes de fichiers. Mais à la différence d’un outil d’image disque classique (dd, G4U ou le logiciel propriétaire Norton Ghost) la lecture suit un algorithme conçu pour récupérer un maximum de données sans provoquer d’autres dégâts sur un disque déjà abîmé.

Je vais illustrer son utilisation avec l’histoire d’un crash disque réel, encore en cours de résolution pendant que j’écris ces lignes. Je mettrai l’accent sur tout ce qu’il ne faut pas faire, puisqu’à moins d’avoir fréquemment des crashs disques, le pékin moyen n’a que peu d’expérience et donc de bons réflexes. Au passage on mentionnera le plus d’outils utiles.

Sommaire

Nouveautés

GNU ddrescue 1.20

  • nouvelle façon de compter les erreurs, suffisamment troublante pour qu’une version 1.21 soit sur les rails et donne plus d’informations ;
  • sauvetage de CD ce qui le rapproche des autres outils ;
  • logfile renommé mapfile partout ;
  • vérification (optionnelle) de cohérence des données lues.

dd_rescue 1.99

  • greffon ddr_crypt : accélération matérielle pour CPU ARMv8 (même en 32bits) conduisant à une vitesse multipliée par 10 sur le (dé)chiffrement AES. La gestion de xattr a été étendue et une option est disponible pour gérer les fichiers Salted__ compatibles openSSL. Un bug d’initialisation CTR a été corrigé ;
  • dans le programme principal, révision des logiques de ré-essai en cas d’erreur d’écriture ou de fault injection (le cadriciel de fault injection est utilisé pour des tests) ;
  • encore plus de variantes pour les binaires Android.

L’aventure

La suite est une histoire rédigée « en temps réel »…

Le pitch

Dimanche, au saut du lit, Anne, webmistresse de Chez les enfants, me demande un CD-Rom pour réinstaller Windows Seven sur son portable qui ne démarre plus.
— Pardon ? Je n’ai aucun CD Windows et on ne réinstalle pas pour ça…
— Mais c’est Windows qui dit…

Quelques questions plus tard, on dirait que le responsable de son informatique a très mal fait son boulot : Anne n’a aucun CD pour son ordinateur et la partition de restauration a été effacée. Et pire : les sauvegardes ne sont plus effectuées ! Et puis elle utilisait un compte administrateur. Et puis le disque dur a quelques années de trop. Et puis ce portable c’est l’ordinateur principal, celui qui contient tout, y compris les licences des logiciels. Etc.

Ah oui ! le « responsable » informatique grommelle que c’est sa faute à elle, que faut pas faire mu-muse avec Windows. Etc.

pirate

Là, c’est la panne, Windows réclame un CD pour restaurer le démarrage. Je suis à 900 km de chez moi, en plein déménagement, et je vais devoir l’aider avec les moyens du bord : une clé USB de 7 gigas et mon vieux portable.

Les CD de dépannage

Comme il est exclu de récupérer un CD Windows pirate^Wcontrefait, je commence par fouiner dans les outils classiques pour Windows : Ultimate Boot CD (UBCD) et sa variante UBCD4Win. UBCD intègre une centaine d’utilitaires gratuits pour dépanner et diagnostiquer les problèmes. UBCD4Win est dérivé de BartPE et propose d’autres outils spécifiques à Windows.

Las ! Windows c’est de l’histoire ancienne pour moi, et je ne sais trop quoi faire avec ces outils. En fait l’urgence et le stress me déconcentrent.

Quand même, j’ai assez de présence d’esprit pour mettre à jour System Rescue CD, un des indispensables dans la « trousse de secours », qui contient plein d’utilitaires systèmes et matériels sous Linux ou sous DOS.

Puis en lisant plein d’infos pour récupérer Windows je découvre qu’on peut légalement télécharger Windows Seven et que la console de récupération intégrée est nettement mieux foutue qu’autrefois. Bon d’accord. Faisons au plus simple après tout.

Une clé USB bien outillée

Ah zut ! C’est une image DVD. Mon portable ne grave que les CD. Je ris, mais je ris jaune. Il va falloir démarrer avec la clé usb — Windows va-t-il aimer ça ?

C’est assez simple en fait : en gros, il suffit de monter l’image ISO en loop et d’en recopier le contenu sur la clef correctement formatée. L’opération est bien décrite sur le site de Plop. Plop est sérieux : il a développé un gestionnaire de démarrage sophistiqué, un outil pour restaurer les images disques de Partimage, un programme de récupération pour le système de fichiers HFS+ (utilisé par MacOSX), et même, à lui tout seul, une distribution Linux peu gourmande en ressources qu’il maintient depuis 2003. Plop c’est un genre de Patrick Volkerding.

Tant qu’à surfer, je refais un tour vers d’autres outils : nLite (pas libre) pour alléger un CD Windows et le site du regretté Jean-Claude Bellamy pour me documenter sur la structure d’un secteur de boot de partition NTFS. Je farfouille même un peu chez Reactos pour y trouver docs et outils.

Enfin, je reviens à ma clef. J’ai un port USB 1.1. Recopier les fichiers de l’ISO un par un va donc être très long. Copier directement l’ISO, c’est beaucoup plus rapide. Et puis, je vais sûrement avoir besoin d’autres outils, donc autant mettre un max d’ISO sur la clé.
Oui mais.
Vous avez déjà essayé de faire rapidement une clef USB multi-systèmes Linux-Windows ?

Je me souviens de certains outils. Il y a MultiSystem dont on parle souvent ici, qui est bien maintenu et qui est disponible sous Debian. Mais il a plein de dépendances que je n’ai pas sur ma poussive bécane. Et puis ça m’embête, je cherche plus simple. Rien de neuf sur Wikipedia.

Quand, au détour d’un blog…

Easy2Boot : la merveille

Génial. Pile ce que je veux. Easy2boot ne nécessite pas de manipulation particulière pour l’intégration des ISO : il suffit de les copier sur la clé. Rien n’est installé sur le PC servant à générer la clé USB. Il y a des utilitaires pour préparer la clef depuis Linux et Windows et un mode d’emploi pour le faire depuis… autre chose. C’est simple et tout petit. Adopté.

Easy2boot c’est une collection bien foutue de scripts pour Grub4dos.

« Ça » gère l’UEFI et le MBR. Les partitions FAT 32, NTFS et Ext4. Les images de CD, les images de disques, les images VHD et WIM (pour amorcer Windows). Les images discontinues. Les installations Linux live et persistantes. Easy2boot gère les mises à jour d’easy2boot. Et tellement d’autres choses : il y a des menus tout prêts pour accueillir vos utilitaires, vos CD de secours préférés (cités plus haut d’ailleurs), des antivirus… La doc, le forum et le blog sont bien fournis et actifs.

Bref, je vous la fait courte et je copie mon image DVD de Windows dans la clé. On relance le portable, qui commence à démarrer puis un écran Windows dit que bla bla bla… le démarrage… et que le CD d’installation va tout réparer. Bon bon bon.

La réparation auto de Windows (bousillante)

Donc au démarrage du CD on peut choisir de lancer la console de récupération WinRE. On arrive sur ce menu rempli de pièges :

Menu de la console WinRE

Aaaah ! Ça sent la fin des ennuis, on se frotte les mains et chtok ! On clique sur la réparation auto du démarrage.

La réparation automatique par WinRE

Mais mais mais ça dit rien du tout. On ne sait pas ce qui se passe, on n’a pas la main et après quelques instants la touche Annuler n’a aucun effet.

Ça tourne. Et comme ça tourne pendant des heures je vais admirer les poissons hérissons dans l’aquarium d’Anne. Je frôle des pingouins jouet en bois (elle vend des jouets). Celle-là elle va bientôt migrer vers le libre. Elle est prédestinée.

Diodon openbsd

J’en profite pour lui bricoler une bécane avec une tour mise au rebut. Elle passe de Windows Seven à Debian Jessie et Gnome 3. Oh ! Comme c’est ergonomique et simple ! Et comme c’est rapide ! Mais pourquoi l’avait-on jetée cette tour ? Tu dis ? Tu utilises une autre interface graphique ? Ben chacun ses goûts, hein. Ça me change, c’est reposant.

L’intermède découverte passée, chacun reprend son boulot : elle regarde si elle pourra gérer ses ventes de jouets lundi, tandis que je m’inquiète de Windows : ça dure vraiment trop longtemps. Impossible de savoir ce qui se passe. Impossible d’arrêter le processus (refus tout net du système, qui n’est pas planté).

La journée à passé. Autant débrancher.

Je relance sur System Rescue CD (merci easy2boot). Petite analyse du matériel : FSArchiver en mode info (fsarchiver probe simple), puis GNU Parted qui ramouille étrangement. Tilt. C’est un problème de crash disque, pas une erreur système Windows.

Et en effet : le syslog se remplit d’erreurs d’entrées-sorties. Tu parles ! Manipuler un système de fichiers sur un disque crashé, c’est destructeur. La réparation automatique de Windows a augmenté les dégâts.

Pour m’en assurer je pourrai lancer le puissant MHDD un outil bas niveau d’accès direct au disque qui donne beaucoup plus d’infos que SMART ; c’est un programme DOS[hddsupertool]. Mais pas sûr que faire tourner le disque dur soit très malin.

À l’heure où j’écris j’en sais évidemment beaucoup plus. J’aurais pu, suivant le tutoriel de Marie sur l’invite de commande WinRE lancer plutôt un checkdisk sous Windows, mais ça aurait fait autant de dégât car chkdsk ne minimise pas les déplacements de la tête de lecture sur le disque.

Si j’avais su ! Mais sans journal système, c’est impossible. Ainsi, à mon sens la console de réparation Windows a deux défauts :

  1. pas de journal système pour voir les erreurs d’entrées-sorties ou ce qui se passe pendant que ça tente de réparer tout seul ;
  2. ses outils changent trop souvent ; d’une version à l’autre il faut tout réapprendre et retrouver la documentation, qui n’est pas accessible depuis le CD. Taper help ne sert à rien.

C’est toujours dimanche, il ne fait pas encore nuit, c’est maintenant que ça commence vraiment.

La recherche d’outils inadaptés

G4U MIDS Partimage Partclone FSArchiver
 

Évidemment je ne pensais pas que c’était inadapté.
Le problème avec les sauvetages d’urgence c’est qu’on n’en réalise pas souvent. Et ça a beau ne pas être nos données, la pression est là qui rend le cerveau mou et la mémoire vide… Tout de même ! Je ne perds pas complètement la tête : il faut cloner le disque avant tout. Il s’agit de sauver ce qui peut l’être.

Mais impossible de retrouver le nom du bon outil. Alors je pars sur les outils classiques de clonage, plus utiles avant un crash, pour préparer des images disques. Je commence en restant le plus proche possible du matériel, puis comme ça ne marche pas je descends peu à peu au niveau du système de fichiers :

  • G4U (Ghost for Unix), un excellent et puissant outil de clonage séquentiel, comme NortonGhost. Développé par Hubert Feyrer depuis 15 ans. Ultra léger, ultra petit, basé sur NetBSD. Ce n’est pas seulement un ensemble de scripts bash utilisant dd ! Après avoir démarré sur G4U (disquettes, image iso ou PXE), on peut cloner (ou restaurer) de façon variée : vers un fichier, vers une partition, vers un disque et vers un ftp. Comme il travaille au niveau matériel, G4U n’est limité par aucun OS ou système de fichiers. G4U ne monte pas le disque. Il peut cloner et restaurer le MBR et la table des partitions, effacer le contenu d’un disque (wipe disk). La dernière version, encore en bêta, contient une détection d’erreur qui permet de cloner les disques avec des secteurs défectueux.
  • MIDS (Machine Image Delivery System) est une interface en ncurses pour la fonction de restauration de G4U
  • Partimage, l’outil classique de clonage pour des sauvegardes, par l’auteur de SystemRescueCd. Partimage ne monte pas le disque, mais comme il ne prend que les données présentes dans les partitions, il ne lit pas tous les systèmes de fichiers. Tout de même, il ne défragmente pas, c’est cool ! Eh oui, comme les fragments de fichier restent à leur place, les mouvements de la tête de lecture sont minimisés.
  • Partclone, semblable à Partimage, il sauve et restaure les blocs utilisés d’une partition. Il lit plus de systèmes de fichiers.
  • FSArchiver, toujours par l’auteur de SystemRescueCd, est encore plus près du système de fichier. Il en sauve le contenu, ce qui permet de restaurer sur une partition de taille différente.
  • fsarchiver_dialog et qt4-fsarchiver en sont des interfaces graphiques, l’une en ncurses, l’autre en Qt.
  • J’avoue ne pas savoir si ntfsclone est utilisé par FSArchiver, ni pourquoi ce ne serait pas le cas. En tout cas son nom est clair. Par les auteurs de Ntfs3g.

Rien ne va. C’est mal barré. Le disque est vraiment abîmé. Je ne pense plus à rien, je suis fatigué, hébété, la tête vide…

labyrinthe fromage
Et tout à coup ça me revient, comme si toute pensée disparue, tout doucement pouvait émerger la solution. Comment ai-je pu l’oublier ? Je le connais bien, j’en ai parlé ici-même, il existe en trois versions, l’une d’elle est très supérieure, et pourtant les trois sont utilisées, par manque d’info, par confusion, par méconnaissance du fonctionnement d’un disque. C’est un super outil, vraiment, et comme le dit Kurt Garloff :

« It does work. I unfortunately did not just create this program for fun… »

Soyons clair : les outils ci-dessus, ne sont pas fait pour du sauvetage. C’était une erreur de les utiliser. D’ailleurs je suis en colère contre moi, je m’adresse des insultes nouvelles, si j’étais dans une BD la page se couvrirait de graffitis. Les dégâts sont encore plus grands maintenant.

Le sauvetage

GNU ddrescue

Je m’en veux de ne pas y avoir pensé avant : perte de temps et bousillages. GNU ddrescue a été écrit pour pallier les « défauts » du dd_rescue originel de Kurt Garloff. Son algorithme permet d’optimiser la lecture en infligeant le moins de coups possible au disque. Un peu comme la voix rassurante du camion de pompiers qui dirait : « Tiens bon ! Tiens bon ! » tandis que la sirène de l’ambulance hurlerait : « T’es foutu ! T’es foutu ! »

Aperçu de l’algo : récupère d’abord les zones en bon état pour prévenir les erreurs de lecture en sautant largement les zones mortes ; produit une première copie approximative et une carte du disque ; puis à l’aide de la carte, délimite plus précisément les zones mortes, récupère ce qui est lisible, note les clusters morts et complète la carte ; enfin plusieurs passes de lecture en insistant, en raclant cluster après cluster, et en complétant encore la carte. Ça prend du temps. Au bout du compte on a une nouvelle copie.

À part le dd_rescue de Kurt Garloff, tous les logiciels de sauvetages cités ci-après partagent peu ou prou le même algorithme.

Le bricolage de disque

compression

Je redémarre l’ordi avec SystemRescueCd, ddrescue est livré avec.

Naturellement les ennuis n’arrivent jamais seuls[murphy].

Mon disque externe IDE de 80 gigas ça va pas le faire pour accueillir la restauration. Allez j’ai connu les temps héroïques, je bricole ! Prenons l’un des disques raid de la tour à peine montée, 320 gigas en SATA et hop ! Dans le disque externe ; prenons un connecteur SATA, prenons une alimentation SATA et branch… oups ! Pas de câble d’alimentation SATA !

« Viens voir ici petite tour… Oh ! Comme tu as les câbles longs ! Et si tu branchais une de tes alimentations SATA sur le disque externe ? On ferait un pontage tu vois, ça sauverais le malade… »

Les câbles s’avèrent un peu courts, mais faudra faire avec.

Avant de copier la partition malade vers une autre, il faut s’assurer de la concordance géométrique des deux partitions. À coup de fdisk on vérifie et on paramètre la taille de secteur (habituellement 512 octets), le nombre de secteurs de chaque partition — et, bien entendu, le type de partition.

Quant au sauvetage, rien de difficile, le manuel est bien fait et contient quelques exemples courants.

Dans mon cas :

  • ddrescue -n -f /dev/hda2 /dev/hdb2 mapfile
  • ddrescue -r3 -d -f /dev/hda2 /dev/hdb2 mapfile

Autrement dit :

  • la première commande récupère les parties lisibles en contournant de loin les zones mortes et en dessinant une carte sommaire, on évite de racler le disque et on force ddrescue à recopier vers une partition ;
  • ensuite, on repasse trois fois sur les zones mortes en accédant directement au disque, la carte gagne en précision au fur et à mesure.

Vous vous souvenez que j’avais retrouvé mes esprits ? Je relis le manuel. Je regarde le disque externe relié à deux ordinateurs. Tout ça va tourner plusieurs jours. On peut faire plus simple.

Copie réseau

Finalement, je remets le disque dans la tour, je crée un partage NFS, le monte sur le malade et je copie mon disque vers un fichier :

  • ddrescue -n /dev/hda1 /mnt/fichier_copie mapfile
  • ddrescue -r3 -d /dev/hda1 /mnt/fichier_copie mapfile

  • ddrescue copie la partition hda1 vers un fichier en sautant la phase de raclage et en produisant une carte ;

  • puis ddrescue est relancé pour 3 passes de copie en shuntant le cache du noyau, la carte est utilisée et mise à jour.

Le lendemain matin, à une heure assez tardive tout de même, la première copie est terminée. On regarde un peu la carte, on pousse un grand soupir et on relance ddrescue pour 3 ou 4 jours de moulinage.

Le fichier carte de ddrescue à travers un visualiseur

Au début, vous verrez beaucoup de zones défectueuses (en rouge) :

ddrescueview début

Après le premier passage, vous zoomerez dans la bêêêêêête et ce sera pire et vous aurez trèèès trèèès peur :

Fred Fort dans La bête
(« La Bête » par la compagnie Annibal et ses éléphants – photo: Vincent Muteau/Annibal)

Bon d’accord :

ddrescueview deuxième passe

Enfin, vous verserez des larmes de joies :
ddrescueview
(À gauche, le disque entier avec des zones mortes. À droite, j’ai zoomé sur l’un des traits rouges : c’est presque tout bon ! Seuls quelques secteurs n’ont pu être lus.)

Lire la copie

Alors ? Tu viens de passer 4 jours à tourner en rond, tu as enfin une copie de ton disque foutu et tu voudrais la lire ? Reprends d’abord un café ! La lire, c’est prendre un risque énorme :

  • la copie contient encore des erreurs, la carte en atteste, il faudra peut-être relancer ddrescue pour l’améliorer ;
  • d’autre part, on aura sûrement une vérification du système de fichier à lancer sur la copie, ce qui va la transformer — sans parler d’opérations plus destructrices et d’erreurs de manip en tout genre —, et alors ddrescue ne pourra plus l’améliorer.

Donc on va travailler sur un double. On a l’habitude, on est informaticien !
Je fais un double.
Je monte l’image en loop :
mnt -o loop fichier_copie_de_copie /mnt.
Les fichiers ont l’air tous là, c’est cool… Ah non, il y a encore plein d’erreurs… Va falloir faire un checkdisk. Mais… La commande chkdsk n’existe pas sous Linux.

Pourtant on a des utilitaires pour ntfs :

  • ntfsfix, qui est un faux ami : sauf quelques erreurs communes, il ne répare rien, il marque plutôt le système de fichier à vérifier lors du démarrage de Windows. Comme le dit le man : « ntfsfix is NOT a Linux version of chkdsk ».
  • Et des outils pour récupérer le contenu d’un système de fichier corrompu :

Ce ne sont pas des chkdsk : on les utilise généralement après un chkdsk qui nous dit qu’il y a plein de problèmes. Pour ma copie récupérée, il faut le chkdsk de Windows Seven[ntfs] !

La solution est très simple : lancer l’installation de Windows Seven en machine virtuelle, le disque cible sera la copie[qemu] ; on invoque la console de récupération et on lance le shell Windows (l’invite de commande, le cmd).

Allez, on retourne au tutoriel de Marie sur l’invite de commande WinRE :

  • ne pas s’affoler si la console ne voit pas de disque !
    Pas de disque dans WinRE
  • on lance Diskpart, on attend un peu beaucoup et au prompt un coup de Help nous montre que c’est un outil assez complet ;
  • on s’informe sur le disque, la partition, mais pas moyen de la sélectionner (parce que c’est une image de partition) ! C’est un petit bug qui se contourne aisément :
    Select disk 0 puis Detail Disk montre un seul disque nommé C. Exit Diskpart.
    diskpart detail disk
  • yapuka Chkdsk C: /f /r (n’oubliez pas le deux-points !).
    chkdsk vérifie les indexchkdsk vérifie USNrésultat chkdsk
    Et quelques heures plus tard, à minuit, vous expliquez à vos voisins ce que signifiait votre danse du scalp et les chants de loup sur le balcon. Vu la fièvre dans vos yeux, ils n’écoutent pas « vos délires d’alcoolique drogué ».
  • on copie enfin les fichiers rescapés[fichiers].

Et c’est tout.


Note pour les trop pressés

horloge

  • Prenez votre temps! Lisez les documentations attentivement avant de tenter quoi que ce soit. On récupère plus de choses avec quelques précautions. Par exemple laissez le disque refroidir de temps en temps, sur un système de fichiers Unix pensez à regarder dans lost+found, faites une copie, travaillez lentement, …
  • Méfiez vous des idioties glanées sur les forums — j’ai vu souvent « fais une passe de ddrescue et lance photorec. » Rien de pire que d’échouer par méconnaissance, alors que les forums de Photorec, SystemRescueCD et HDDGuru sont fréquentés par des personnes de bon conseils et des experts. De même que, bien sûr, les listes de discussion des logiciels cités.

Les autres outils

Toujours présents dans les dépôts des distributions, ces outils ne sont ni obsolètes, ni dépassés, comme on peut le lire ça et là. Leur fonctionnement est très semblable.

dd_rescue de Kurt Garloff

« Dépassé ? » L’idée originale. Toujours très activement développé, sous Linux et Android. dd_rescue a pas mal de fonctions avancées. Kalysto a écrit dd_rhelp qui le complète en « corrigeant » son algorithme. Toujours utile dans certains cas, d’après Kurt Garloff, et à condition de savoir ce que vous faites (et de ne pas être trop pressé) :

GNU ddrescue fournit un moyen plus facile pour de nombreux scénarios de récupération de données que la combinaison de dd_rhelp et dd_rescue. D’autre part dd_rescue est toujours intéressant car il a un certain nombre de caractéristiques spéciales, comme l’accès direct aux entrées-sorties, les copies fragmentées, les copies en tranches (slice), la pré-allocation …
Il convient de noter aussi les fonctions de protection des données qui permettent l’effacement sécurisé des fichiers et des périphériques de stockage en les écrasant avec les données d’un générateur de nombres pseudo aléatoire en espace utilisateur.
En outre, des plugin vous permettent d’analyser ou transformer les données : hachage sécurisé, (dé)compression LZO et chiffrement. Parmi les fonctions spéciales de dd_rescue, ils gèrent la direction de copie inversée ou les fichiers fragmentés (avec des trous), et vous pouvez stocker les propriétés supplémentaires (une valeur de hachage ou un sel) dans les attributs étendus du fichier.

myrescue

« Dépassé ? » Il n’est plus développé. N’empêche, myrescue répond aux critiques sur l’algorithme de Kurt Garloff. Comme le programme d’Antonio Diaz Diaz, myrescue récupère d’abord les données lisibles avant de s’attaquer au reste (il n’y a pas 36 façon de faire).

Comment ça marche ?

Le programme essaie de copier le périphérique par blocs vers un fichier et conserve une table (« block bitmap ») notant si un bloc a été copié avec succès, pas encore géré ou a eu des erreurs. Cette table peut être utilisée dans les exécutions successives pour se concentrer sur les blocs pas encore sauvés.
Le programme dispose d’un mode spécial, de saut, pour traiter les erreurs de lecture. Habituellement, les défauts de surface des disques dur couvrent plus qu’un bloc et la lecture continue dans les zones ç défaut peut endommager la surface, les têtes et (par recalibrage permanent) les mécanismes d’entraînement. Si cela se produit, les chances de sauver les données intactes restantes chutent de façon spectaculaire. Ainsi, dans le mode de saut, myrescue essaie de sortir des zones endommagées rapidement en augmentant le pas de manière exponentielle. Les blocs sautés sont marqués comme non gérés dans la block bitmap et peuvent être relus ultérieurement.
Enfin, le programme dispose d’une option pour multiplier les essais de lecture d’un bloc avant de le marquer endommagé.
(explications de l’auteur)

Safecopy, un logiciel équivalent

L’auteur de Safecopy a découvert dd_rescue après avoir fini son travail. Bien qu’il semble qu’on ait encore une fois réinventé la roue, les techniques de récupération ne sont heureusement pas brevetées.

L’algorithme est similaire à celui de GNU ddrescue, cependant l’accent est mis sur des choses différentes, selon le développeur (propos tenus en 2009) :

  1. ddrescue fait l’équivalent du « sauvetage en plusieurs étapes » de SafeCopy mais automatiquement en un seul passage, partitionnant le fichier source semi-intelligemment en fonction des erreurs d’entrée/sortie trouvées ; mais à mon humble avis il donne à l’utilisateur moins de retour et de contrôle sur le processus de copie et les erreurs se produisant.
  2. ddrescue est plus optimisé pour la vitesse globale de copie, en particulier sur les données correctes. Qu’il soit effectivement plus rapide que SafeCopy sur des données réelles dépend du matériel, de la distribution des erreurs et du paramétrage. Vous pouvez généralement trouver des paramètres pour rendre SafeCopy plus rapide que ddrescue, mais ddrescue essaie d’être optimal tout seul sans nécessité de peaufiner les paramètres. En général, faire SafeCopy –stage1 puis –stage2 est à peu près comparable en vitesse. Faire un –stage3 rend SafeCopy considérablement plus lent mais sauve potentiellement plus de données.
  3. ddrescue à ma connaissance n’a pas de capacités entrées/sorties bas niveau en propre, mais gère les périphériques /dev/raw pour contourner la mise en cache au niveau du noyau (le montage du périphérique raw doit être fait manuellement néanmoins. Vous devriez être capable de le faire avec SafeCopy aussi, mais honnêtement, je n’ai pas encore essayé. S’il vous plaît donnez-moi un rapport de bug si il y a des problèmes 🙂
  4. ddrescue produit des fichiers journaux incompatibles avec fsck, mkfs ou les listes badblock de SafeCopy. Néanmoins ça devrait être contournable avec un simple script de transformation perl ou bash.

Relire les CD endommagés

récupérer un CD avec SafeCopy

SafeCopy bénéficie de gros avantages quant il s’agit de CD endommagés, grâce à ses entrées/sorties bas niveau ; il peut être mieux adapté à un utilisateur expérimenté, voulant un contrôle fin, tandis que ddrescue peut être mieux adapté à des utilisateurs ne sachant pas ce qu’ils font mais voulant récupérer un max de données avec un préjudice minimum en matériel et en temps.

En cherchant d’autres solutions, l’auteur de SafeCopy a aussi noté :

  • recoverdm – un outil qui fonctionne à un niveau matériel encore un peu plus bas et pourrait donc être un peu plus efficace ;
  • cdrdao – avec d’autres outils comme bin2iso, probablement la meilleure alternative pour travailler sur des CD.

Outils pour GNU ddrescue

ddrescue-gui ddrescueview ddrutility partclone Lzip
 
  • ddrescuelog : livré avec GNU ddrescue. Pour examiner la carte et la convertir au format d’autres logiciels (par exemple e2fsck).
  • DDRescue-GUI : interface Python / QT4 pour simplifier l’usage. Seulement les options de base. Léger, multi système.
  • ddrescueview : interface en Pascal / Delphi pour visualiser le journal de récupération — en temps réel. Très utile pour comprendre ce qui se passe. Très léger. Doc bien foutue
  • ddrutility : plusieurs utilitaires pour repérer les domaines d’actions de ddrescue et les fichiers liés aux zones défectueuses. Doc bien foutue
  • Partclone : clonage de disque mais peut aussi générer un domaine d’action pour ddrescue (liste des blocs à récupérer). Semblable à Partimage, il est développé par l’équipe derrière Clonezilla.
  • Lzip et Lziprecover pour compresser l’image. L’auteur de ddrescue aime bien promouvoir ce zippeur semblable à 7zip (compression LZMA), qui contient des outils pour récupérer une archive corrompue.

Prévenir les pannes

  • Smartmontools au minimum ;
  • Badblocks, quelque peu dépassé selon l’auteur de Diskscan ;
  • DiskScan analyse l’état du disque ;
  • et… les sauvegardes.

S’entraîner

On peut, si on veut, s’entraîner avec des vieux disques durs rachetés dans un vide grenier, mais ce sera plus rapide avec une simulation de disque en panne. Il y a plusieurs façons d’en simuler. Autant commencer avec un outil tout prêt : SafeCopy en fournit un, et dd_rescue un cadriciel de test. L’article Statistical analysis of damaged data storage media read timings s’intéresse au bagage théorique et aux méthodes de statistiques sur des médias simulés. Utile pour comprendre comment accélérer les outils de récupération de données.

 

Vous avez de quoi bien vous occuper, pendant que j’emmène la famille en promenade.
pingouins


[hddsupertool] : sous Linux on a HDDSuperTool au cas (rare) où MHDD ne détecterait pas votre disque, mais cet outil n’est pas à mettre entre toutes les mains ! Notez que c’est un freeware/graticiel non libre, par l’auteur de ddrutility.
[ntfs] : au cas où tu l’aurais oublié mon canard, NTFS évolue ; même si tout pourrait bien se passer, il vaut mieux utiliser le chkdsk de la version de Windows ayant traité le système de fichiers.
[murphy] : http://www.e-scio.net/cqfd/lem.php3
[qemu] : L’installation de Windows Seven demande 1 Go de RAM, par commodité j’ajoute un menu de démarrage et un clavier français :

$ qemu-system-x86_64 -enable-kvm -boot menu=on -k fr -m 1024 -cdrom /home/anne/Téléchargements/fr_windows_7_home_premium_with_sp1_x64_dvd_u_676521.iso -hda fichier_copie_de_copie
[fichiers] : La plupart des fichiers sur le disque ne sont pas des données essentielles, mais des fichiers système ou des fichiers liés à vos programmes (bibliothèques, journaux, fichiers temporaires, etc.). Ici sur 281,51 gigas de données, seuls 7,90 mégas sont illisibles. Il faudrait jouer de malchance pour ne pas avoir récupéré tous les documents.

Merci à Baud, Nils Ratusznik et Benoît Sibaud pour leur aide et leur relecture attentive.

Merci à Anne Chenevat et Chez les enfants pour les photos de jouets et à la compagnie de théâtre de rue Annibal et ses éléphants pour « La Bête ».

Lire les commentaires

(Source: LinuxFr.org : les dépêches)

Étiquettes: