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

140
25
oct.
2015
Matériel

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 a 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 DOS1. 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 seuls2.

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 Seven3 !

La solution est très simple : lancer l'installation de Windows Seven en machine virtuelle, le disque cible sera la copie4 ; 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 index chkdsk vérifie USN ré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és5.

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.

Sans oublier ddrescue !

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


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


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

  2. http://www.e-scio.net/cqfd/lem.php3 

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

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

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

Aller plus loin

  • # Merci

    Posté par  . Évalué à 10.

    Mon petit doigt me dit que cette dépêche va se retrouver en bookmark chez pas mal de monde!

    Merci pour le retour d’expérience et le tour d'horizon très exhaustif des différents outils!

    • [^] # Re: Merci

      Posté par  . Évalué à 7.

      En fait, l'étape suivante serait de créer une trousse de premiers secours, dont cette dépêche ferait partie.

  • # Et une carte Compact Flash?

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    Est-ce que la récupération de données marche pour une carte Compact Flash?
    Et surtout, l'OS ne semble même plus la voir! Si je l'insère dans le lecteur, rien ne se passe, rien dans dmesg non plus. Donc a priori, je ne pense pas qu'un périphérique sous /dev/ lui est associé.
    Quelles sont les possibilités dans un tel cas?

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

    • [^] # Re: Et une carte Compact Flash?

      Posté par  (site web personnel) . Évalué à 3.

      Essayer plein de lecteurs différents. J'ai déjà eu en main des cartes Compact Flash qui n'étaient plus visibles depuis plusieurs lecteurs, et encore accessible sur l'un d'eux. Peut-être un problème de tension ?

      • [^] # Re: Et une carte Compact Flash?

        Posté par  (site web personnel) . Évalué à 1.

        Oui, il ne faut pas hésiter à tester tout plein.

        Il faut aussi tester sur d'autres machines, avec d'autres versions ou différents systèmes d'exploitation, et d'autres ports usb si on utilise un lecteur par usb.

        J'ai déjà eu une clefs usb qui n'était pas lisible sur certains ordis (et qui a fini par ne plus être lisible du tout, mais entre temps j'avais pu récupérer tout son contenu)

        • [^] # Re: Et une carte Compact Flash?

          Posté par  . Évalué à 2.

          J'ai un Sansa Fuze sur lequel on peut écrire dessus avec Windows ou Linux. Si l'on écrit dessus avec Linux, Windows ne peut pas voir les fichiers écrits par Linux. Dingue, non?

      • [^] # Re: Et une carte Compact Flash?

        Posté par  (site web personnel) . Évalué à 4.

        Ça c'est très pertinent. En particulier pour les CD endommagés : il faut en faire des copies (avec les outils ad-hoc) en utilisant des lecteurs différents ; les zones défectueues ne seront pas les mêmes. En croisant les copies on récupère tout.

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: Et une carte Compact Flash?

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 26 octobre 2015 à 19:16.

      Il s'agit alors de ne pas se tromper avec les numéros mineur et majeur lors du mknod, à l'ancienne.
      Une fois cela fait, le reste coule de sources ;)

      • [^] # Re: Et une carte Compact Flash?

        Posté par  (site web personnel, Mastodon) . Évalué à 2.

        Salut,

        Pourrais-tu être plus explicite stp? L'article ci-dessus ne parle pas de l'utilisation de mknod.
        Alors je comprends que mknod sert à créer le fichier périphérique sous /dev/, et que donc tu me dis que cela permet de le créer manuellement et donc d'accéder à ma carte malgré que mon kernel ne semble pas le voir de lui-même.

        Mais alors j'ai beau regarder la page man et diverses pages, je trouve aucune info (ou alors anciennes et plus à jour) qui m'aide à comprendre comment on choisit les paramètres.

        Si t'as une référence qui explique bien comment cela marche, je suis preneur.

        à l'ancienne

        Je pense que je suis pas assez ancien! :P

        Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

        • [^] # Re: Et une carte Compact Flash?

          Posté par  (site web personnel) . Évalué à 2.

          malgré que mon kernel ne semble pas le voir

          pas tout à fait : il ne créait pas de device spécifique, cela ne veut pas dire qu'il n'est pas capable d'y accéder.

          LFS est un bon point de départ pour cela. Bémol : il m'est déjà arrivé d'appeler le mauvais disque (…) Envoie ta compact flash, au pire ;-)

  • # Sauvegarder toujours

    Posté par  . Évalué à 10.

    Quand je vois le bazar, je me dis qu'il faut toujours, toujours, toujours faire une sauvegarde.

    • [^] # Re: Sauvegarder toujours

      Posté par  . Évalué à 6.

      Il faut… quand tu as la possibilité de le faire.

      J'ai perdu une carte microsd en pensant que ma housse de téléphone était étanche. Elle l'était une peu :/ mais pas avec la douche qu'on a prise.
      Résultat : microsd impossible à lire. Le téléphone ne prenait plus de microsd du tout, même neuve, et ne chargeait plus.
      Bref, il avait pris un court jus.
      De retour au calme et surtout au sec. Le téléphone charge et lit les microsd mais pas celle qui a pris l'eau.

      J'ai pu récupérer la quasi totalité des données avec ddrescue pour faire une image sur un autre disque et TestDisk pour tout extraire de l'image prise. L'infiltration d'eau avait principalement corrompu le FS, je n'ai pas eu d'erreur d'I/O.

      Mais comme le dit l'auteur du post, dans le doute, faire une copie et travailler sur une copie de la copie. La copie devient en quelque sorte un original puisque l'original est en train de mourir.

  • # DVD Vidéo

    Posté par  . Évalué à 8.

    En revanche il vaut mieux éviter d'utiliser ddrescue (où même dd tout court) avec un dvd video.
    Je ne sais pas si c'est une protection anti copie, mais des dvd vidéos parfaitement lisibles sur le lecteur vont renvoyer des erreurs, ralentissant considérablement le processus de sauvegarde. Au boût de 24h d'usage continu du laser, il y a de forte chance que le lecteur soit grillé… C'est ce qui m'est arrivé une fois :(
    Il est préférable d'utiliser des outils dédiés comme dvdbackup.

    • [^] # Re: DVD Vidéo

      Posté par  (site web personnel) . Évalué à 9.

      En revanche il vaut mieux éviter d'utiliser ddrescue (où même dd tout court) avec un dvd video.

      FTFY: Avec un dvd protégé !

      Voici mon expérience. Je ne sais pas comment ces choses fonctionne, mais la procédure que je vous donne fonctionne à tout les coups :

      • Échoue systématiquement et lamentablement avec des erreurs d’entrée sortie à n’en plus finir (probablement l’effet du Content Scrambling System :
      root@computer:~# dd if=/dev/sr0 of=mondvd.iso bs=10M
      
      • Fonctionne à tout les coups chez moi :
      user@computer:~$ vlc dvd:///dev/sr0
      root@computer:~# dd if=/dev/sr0 of=mondvd.iso bs=10M
      

      Mon astuce est de lire le DVD avec un logiciel qui va lancer toute la tambouille de déchiffrement. Typiquement je lis le DVD avec VLC, je vérifie que le film se lit convenablement (genre je lance la lecture et je saute arbitrairement vers le milieu du film et je regarde si j’ai le son et l’image). Si j’ai le son et l’image, je quitte VLC, je lance le dd, et ça marche à tout les coups, d’ailleurs je fais toutes mes iso de DVD ainsi.

      Je ne sais pas comment ça marche en interne, mais j’ai constaté que /dev/sr0 est illisible avant d’être lu par VLC, et qu’une fois que VLC l’a lu, /dev/sr0 est lisible, même par dd.

      Après il y a d’autres protections anticopies, comme des systèmes de fichiers volontairement foirés (listant plus de fichiers que nécessaires, pointant vers des bouts de film, etc.), c’est pourquoi il vaut mieux copier tout le disque avec dd (après déchiffrement) que d’essayer de copier le dvd à un plus haut niveau (par exemple en copiant les fichiers VOB) car si vous essayez de copier au niveau système de fichier, vous prenez le risque de générer des copies plus grandes que le dvd lui-même (car certains fichiers volontairement foireux se superposent). Dans ce cas vous copiez le disque avec les autres protections, mais au moins vous êtes sûr d’avoir tout.

      Note : ces protections sont vraiment une plaie, par exemple certains DVD montrent une centaine de titres et seulement une poignée sont valides, mais tous montre des vrais bouts de films (en commençant au début par exemple), le seul moyen de trouver le bon titre est de se taper toutes les publicités qui chacune pointe vers le titre suivant (titre 1 : pub → titre 47 : pub → titre 32 : pub → titre 96 : pub → titre 13 : pub → titre 29 : film). Un fois que vous avez identifié le bon titre, la fois suivante vous pouvez directement demander ce titre. Le problème c’est qu’il y a des titres qui ressemblent au film, du début à la fin, avec des durées équivalentes, mais avec des bouts qui manquent. Par exemple, sur le DVD “Cars 2” il y a un titre qui ressemble vraiment au film, mais en fait qui saute des scènes, donc si vous ne vous tapez pas les pubs avant et que vous chargez direct le titre le plus grand et qui vous semble être le film (ce que fait mplayer, VLC etc. quand on ne passe pas par le menu), votre mioche voit un film avec des scènes qui manquent…

      ce commentaire est sous licence cc by 4 et précédentes

    • [^] # Re: DVD Vidéo

      Posté par  (site web personnel) . Évalué à 2.

      Pour mes CD et DVD, j'utilise depuis de nombreuses années DVDisaster :
      http://dvdisaster.net/en/index.html

      Pour chaque CD/DVD que je grave, j'enregistre sur disque dur le fichier ECC correspondant. Quand j'ai assez de fichiers ECC pour graver un DVD, je purge mes ECC sur un DVD… pour lequel je génère un ECC qui va sur le disque dur, et ainsi de suite.

  • # GNU ddrescue, mais surtout pas dd_rescue

    Posté par  (site web personnel) . Évalué à 6.

    GNU ddrescue est correctement conçu pour récupérer un maximum de données, n'hésitez pas à l'utiliser. Comme expliqué dans cette dépêche, lorsqu'il tombe sur une erreur, il saute une large plage pour s'éloigner au plus vite de cette zone et éviter ainsi d'endommager encore plus le disque dur, puis, quand il a fini de récupérer ce qui est facilement récupérable, il repasse plus finement sur les zones à problèmes.

    dd_rescue au contraire, est à fuir comme la peste, parce qu'il est très mal conçu pour récupérer des données, ou alors très bien conçu pour en perdre un maximum, selon la façon dont vous le prenez : lorsqu'il tombe sur une erreur, il passe immédiatement plus finement dessus, histoire d'être sûr de bien flinguer le disque dur ou la tête de lecture…

    • [^] # Re: GNU ddrescue, mais surtout pas dd_rescue

      Posté par  (site web personnel) . Évalué à 6.

      Oui et non.
      Pour le "pékin moyen" ou pressé, il est à fuir.
      Pour les experts…
      Si j'ai bien suivi, depuis qq versions il peut sauter plus largement. Sur les anciennes versions, le script dd_rhelp lui fait faire ce saut. Comme on peut paramétrer finement dd_rescue, un expert peut lui faire faire à peu près ce qu'il veut.

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # Idiotie de forum

    Posté par  (site web personnel) . Évalué à 1.

    j'ai vu souvent « fais une passe de ddrescue et lance photorec. »

    Je suis assez peu au fait des techniques de récupération windows, mais ça me semblait pas un mauvais conseil pour récupérer les fichiers de données rapidement.

    Qu'est-ce qu'il y a comme avantage à faire le chkdsk sur l'image du disque plutôt que lancer photorec directement dessus ?
    Est-ce que des fichiers supplémentaires peuvent être récupérés après avoir fait le chkdsk ?

    • [^] # Re: Idiotie de forum

      Posté par  . Évalué à 1.

      J'aurais la même question mais en pointant sur foremost (un truc libre développé par le NCIS de l'US Air Force)

      :D

      • [^] # Re: Idiotie de forum

        Posté par  . Évalué à 0.

        ha ben en parlant de NCIS du coup, est-ce que Kali Linux Forensic (dont je viens d'apprendre l'existence mais que je ne connais pas du tout) ne serait pas aussi un truc utile dans le genre ?

    • [^] # Re: Idiotie de forum

      Posté par  (site web personnel) . Évalué à 3.

      • Une passe de ddrescue c'est insuffisant : de larges morceaux seront manquants autour des zones mortes.
      • La récupération d'un disque endommagé ne s'arrête pas à la copie ! Les erreurs dans le système de fichiers sont inévitables lors d'un problème disque (éteint ton ordinateur en débranchant la prise, tu vas voir). C'est indispensable de lancer chkdsk ou fsck pour réparer des erreurs logiques (pas matérielles). In fine ça permet de monter la copie en retrouvant l'arborescence et les noms de fichiers.
      • Enfin, il faut toujours travailler sur un double.

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: Idiotie de forum

        Posté par  (site web personnel) . Évalué à 5.

        Enfin, il faut toujours travailler sur un double.

        Autant indiquer pourquoi ! C'est tout simplement parce que, si le disque dur est partiellement en panne, il est probable que cela ira en empirant, et que des zones de plus en plus grandes vont devenir inaccessibles ou corrompues. Du coup, plutôt que de travailler in situ, mieux vaut rapidement copier tout ce qu'on peut, ce qui permet ensuite d'avoir autant que temps qu'on veut pour travailler sur l'image ainsi récupérée en catastrophe.

        • [^] # Re: Idiotie de forum

          Posté par  (site web personnel) . Évalué à 5.

          Bien sûr qu'il ne faut jamais travailler in situ. Relis-moi Tanguy (dans l'article), je parle d'une copie de la copie récupérée.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

          • [^] # Re: Idiotie de forum

            Posté par  (site web personnel) . Évalué à 2.

            Ah, d'accord, mais ça aussi, ça vaut le coup d'expliquer pourquoi. La raison, c'est que des trucs comme fsck modifient les données, et qu'on peut vouloir repartir des données récupérées sans modification pour utiliser un autre outil. Or, pour ce faire, il faut disposer d'une sauvegarde de l'image récupérée, dans la mesure où relancer la récupération à partir du disque dur endommagé n'est pas du tout souhaitable.

      • [^] # Re: Idiotie de forum

        Posté par  . Évalué à 3. Dernière modification le 26 octobre 2015 à 17:06.

        Ce n'est pas complétement faux.
        Photorec ne se base pas sur le filesystem mais scanne directement les blocs à la recherche de magicblocs décrivant un type de fichiers connu.
        Donc il n'abimera pas la copie faite. Seul difficulté, les fichiers perdent leur metadata: nom, date, chemin ; bien embêtant quand ce ne sont pas que des gros fichiers multimédia.

        Par contre il est vrai qu'il est préférable de travailler sur une copie de la copie et de tenter de réparer le filesystem.

        Photorec n'est à utiliser qu'en dernier recours pour un cas particulier : fichiers multimédia.

        • [^] # Re: Idiotie de forum

          Posté par  (site web personnel) . Évalué à 3.

          C'est vrai que Photorec ne ferait pas de dégats. Mais n'oublie pas qu'il récupère aussi les fichiers effacés. Ce n'est vraiment pas le bon outil à ce stade.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # Commentaire supprimé

    Posté par  . Évalué à -10.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Congélo ?

    Posté par  . Évalué à 2.

    C'est un peu la recette de grand mère mais ça a été efficace pour 2 de mes disques et quelques copains.

    Ingrédients :
    - 1 disque endommagé (qui fait «tack»)
    - 1 congélateur
    - 1 sac congélation
    - 1 cable USB <=> P/Sata

    Recette :
    Mettre le disque dans le sac congélation, aspiré l'air pour faire le vide dans le sac et le fermer. Mettre l'ensemble dans la partie congélation de votre frigo, laisser reposer quelques heures (une nuit est largement suffisant).
    Allumer votre PC qui servira a sauver les données du disque, vous équiper du câble USB utile, sortir votre disque et le brancher immédiatement. Sauvegarder tout ce que vous pouvez.

    Bon c'est moins recherché que ce que tu propose mais pour quelques données ciblées ça peut suffire. http://www.tech2tech.fr/reparer-un-disque-dur-avec-un-congelateur-mythe-ou-realite/

    En tous cas ton article me permettra de ne plus faire cette «recette» hasardeuse.

    • [^] # Re: Congélo ?

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 26 octobre 2015 à 14:50.

      Je connais cette recette et d'autres. Il ne faut pas les appliquer au hasard car elles fonctionnent dans des cas de panne précis et bien identifiés. Mais là on s'approche de l'intervention matérielle qui pourrait faire un autre article… genre « comment monter son atelier de poche et béni soit Scott Mouton ».

      Bref, ne joue pas avec le frigo, ne donne pas un coup de marteau sur la tranche, ne passe pas un coup de chaud, etc. si tu ne comprends pas ce que ça répare.

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: Congélo ?

        Posté par  (site web personnel) . Évalué à 2.

        Dans le même genre, y'a le four… pour fluidifier le lubrifiant sur l'axe de rotation du moteur du disque dur (utilisé il y a trèèès longtemps avec un disque dur d'un Mac).

        Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Congélo ?

      Posté par  . Évalué à 2.

      Tenté. N'a pas marché pour moi : autant de tac tac avant qu'après le congélo.
      Les données n'étaient pas précieuse. Le disque a pris la direction de la déchèterie.

      • [^] # Re: Congélo ?

        Posté par  . Évalué à 5.

        Le congélo marche bien avec le problème du tac-tac car c'est souvent un jeux qui s'est créé sur la tête de lecture au bout d'un certain temps.
        Le froid permet de "resserrer" la tête de lecture. Par contre ça se réchauffe très très vite. L'idéal est donc soit de pouvoir laisser le disque dans le congélo, soit d'entourer le disques de blocs de congélation (le genre de trucs utilisé dans les glaciaires).

  • # Badblocks ?

    Posté par  (site web personnel, Mastodon) . Évalué à 4.

    Badblocks, quelque peu dépassé selon l'auteur de Diskscan ;

    Peut-on avoir plus de détails ?

  • # Cette dépêche fera de mon colocataire un homme comblé sans le savoir

    Posté par  . Évalué à 10.

    Merci pour cette dépêche, j'ai sauvé un vieux HDD externe appartenant à mon colloc' qui était en train de pleurer sur le fait que son mémoire était perdu à tout jamais.

    A présent, je suis devenu à ses yeux une sorte de Jésus de l'informatique et tout ça c'est grâce à toi ZeroHeure.

    La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

  • # Envoie réseau

    Posté par  . Évalué à 10. Dernière modification le 27 octobre 2015 à 09:18.

    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 :

    Généralement, je fais plus simple que ça. Coté récepteur :

    nc -l 5000 > /path/to/file

    et coté disque à sauvegarder je fais un :

    dd if=/dev/sdaX | nc 192.168.1.1 5000

    C'est plus simple à mettre en place je trouve.

    Éventuellement je fais :

    dd if=/dev/sdaX | gz | nc 192.168.1.1 5000
    nc -l 5000 | gunzip > /path/to/file

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Envoie réseau

      Posté par  (site web personnel) . Évalué à 4.

      Pas faux. Mais l'article a pour buts de rester très accessible et de montrer qu'on peut toujours s'en sortir avec un peu d'imagination.
      Par contre les solutions alternatives intéresseront les plus expérimentés.

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: Envoie réseau

        Posté par  . Évalué à 4.

        Monter un partage NFS me semble bien plus compliqué (déjà il faut être administrateur).

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Envoie réseau

          Posté par  (site web personnel) . Évalué à 5.

          Dans le cadre de l'article tu es forcément administrateur.
          NFS c'est le standard largement documenté sous Unix. Et puis quand on cherche "partager un dossier [un disque] sous Linux" les premières réponses de Google sont des pages qui citent avant tout NFS et Samba.

          Je le répète il y a plein de solutions. J'en ai choisi une. Si j'avais écrit "je partage le disque avec Netcat" il y aurait eu plein de questions sur comment on fait. Il n'y en a pas eu sur comment on fait avec NFS.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: Envoie réseau

      Posté par  (site web personnel) . Évalué à 4.

      nc -l 5000 > /path/to/file
      dd if=/dev/sdaX | nc 192.168.1.1 5000

      oui mais si tu peux utiliser dd, c’est que ton disque est sain, et que tu n’as pas besoin de ddrescue.

      ddrescue fait des accès non séquentiels (puisque justement il se ballade à droite à gauche pour contourner les trous, puis revient dessus petit à petit en essayant par l’autre bout) et est donc inutilisable au travers d’un pipe.

      ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: Envoie réseau

        Posté par  . Évalué à 4.

        En effet je n'ai jamais eu à utiliser ddrescue et je viens d'essayer il n'est pas content si son fichier de sortie ne supporte pas le seek().

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # De l'utilité de sauvegarder dans le Cloud

    Posté par  . Évalué à 1.

    Ben voila, en sauvegardant sur des solutions comme GoogleDrive, Dropbox et consorts on n'a plus ce problème.
    Bon ok je sort ->[]

  • # Réaliser plusieurs masters

    Posté par  . Évalué à 4.

    My 2 cents :

    • Toujours avoir un SystemRescueCd avec soi.

    • Réaliser plusieurs images en mettant le disque dans différentes positions (à l'envers, à la verticale, …) ; certains secteurs indiqués comme corrompus peuvent parfois être récupérés ainsi du simple déplacement des poussières.

    • Attention aux tailles de blocs trop grandes avec dd_rescues. J'ai eu un disque qui tombait systématiquement dans le coma arrivé à une certaine "piste" avec une taille de bloc de 16 Ko, alors qu'en 4 Ko il n'y avait aucun problème. C'est probablement du à un problème logiciel interne au disque.

    • [^] # Re: Réaliser plusieurs masters

      Posté par  . Évalué à 10.

      Quelques conseils supplémentaires issues de mon expérience, de mes notes et de la liste de diffusion de ddrescue :

      1) Prendre son temps. Sauf si vous avez de l'expérience, vous devriez démonter les partitions et débranchez le disque le plus rapidement possible.

      2) Bien se documenter avant de commencer la récupération des données. Entraînez-vous sur un vieux disque avant de commencer.

      3) Désactiver le montage automatique avant de rebrancher votre disque. Ne jamais utiliser gparted qui essaye de corriger les erreurs lors d'une copie (fatal pour un disque endommagé).

      4) S'assurer que l'équipement de récupération soit disponible et fiable. La récupération peut prendre plusieurs semaines en continu. Les erreurs ont souvent été créées par un matériel défectueux (contrôleur de disque, RAM, etc). Ne réutilisez pas l'ordinateur ou les composants auxquels le disque était connecté.

      5) Prévoyez 3 fois la capacité des données à récupérer (une pour la copie originale, une pour la copie de travail, une pour les données extraites de la copie de travail). Testez la santé des disques qui récupéreront les données ! Et vérifiez que le disque cible est plus grand que le disque source (parfois il manque juste quelques Mo).

      6) Conserver un journal de toutes les commandes et de leur sorties.

      7) Installez ddrescue (Attention, sous Debian il s'agit du paquet gddrescue, le paquet ddrescue contenant dd_rescue). Préférez une version récente, par exemple en recompilant les sources. Installez également ddrescueview.

      8) Inutile d'ajouter des options à ddrescue comme indiqué dans la dépêche. Pour la récupération d'une partition (ex /dev/sda1):

      sudo ddrescue /dev/sda1 /mnt/recovery-partition/copy.img /mnt/recovery-partition/copy.mapfile

      Ou pour la récupération d'un disque entier (par exemple si la table des partitions a été endommagée):

      sudo ddrescue /dev/sda /mnt/recovery-partition/copy.img /mnt/recovery-partition/copy.mapfile

      Faites toujours la récupération vers un fichier image. Ne copiez pas les données directement vers une partition comme indiqué dans la dépêche (et si vous le faites, pensez à l'effacer complètement avant en y écrivant des zéros !) Ne placez pas le fichier image sur une partition NTFS, plusieurs personnes dont moi ont rapporté que la vitesse décroît au fur et à mesure de la récupération de sorte qu'il est impossible de finir la récupération en un temps fini. N'oubliez jamais de lancer ddrescue avec le fichier mapfile (toujours le même) et conservez-le même une fois la copie terminée (cela peut aider à déterminer quels sont les fichiers endommagés, voir plus bas).

      9) Suivez l'avancement de la récupération avec ddrescueview (vous pouvez changer la fréquence de mise à jour de l'affichage dans les menus):

      ddrescueview /mnt/recovery-partition/copy.mapfile

      10) Pour pouvez relancer ddrescue avec les options -r3 et/ou -d comme conseillé dans la dépêche. Suivant l'état du disque, cela peut prendre plusieurs semaines de plus pour récupérer quelques pourcents supplémentaires.

      11) Faites une copie de la copie et travaillez sur la seconde copie.

      cp /mnt/recovery-partition/copy.img /mnt/working-partition/wcopy.img

      12) Si vous avez besoin d'identifier les fichiers endommagés, vous pouvez utilisez ddrutility. Vous pouvez également exécuter ddrescue en mode remplissage avec comme entrée un fichier texte contenant "BADBLOCK". Par exemple :

      echo "BADBLOCK" > badblock.txt
      ddrescue --fill-mode=- badblock.txt wcopy.img /mnt/recovery-partition/copy.mapfile

      Il ne vous reste plus qu'à chercher BADBLOCK dans les fichiers récupérés.

      13) Pour identifier/réparer/récupérer les données/partitions, vous pouvez utiliser les outils suivants :

      • file pour identifier les caractéristiques de l'image (file -s wcopy.img)

      • fdisk sur l'image d'un disque (`fdisk -l wcopy.img)

      • sfdisk sur l'image d'un disque (sfdisk -l wcopy.img)

      • testdisk sur l'image d'un disque (testdisk /list wcopy.img)

      • kpartx (sudo kpartx -l wcopy.img puis sudo kpartx -v -a wcopy.img) pour accéder aux partitions si vous avez l'image du disque entier.

      • fsck pour réparer une partition (ex sudo dosfsck /dev/mapper/loop0p2 pour une partition FAT mappée avec kpartx, ou fsck.ext4 -y wcopy.img pour l'image d'une partition ext4)

      • mnt pour accéder au contenu de la partition (ex mnt -o loop,ro wcopy.img /mnt/readonly-recovery/)

      • testdisk s'il n'est pas possible de réparer les partitions.

      • photorec s'il manque encore des fichiers après testdisk.

      14) D'autres outils qui peuvent être utiles : dmesg | tail pour identifier les périphériques qui viennent d’être branchés (aussi lspci), df -h pour connaître la place disponible sur les différentes partitions, dumpe2fs image.img | grep superbloc pour comparer les informations des superblocs ext4, md5sum pour comparer deux images ou identifier un contrôleur de disque défectueux, smartctl pour avoir une idée de l'état de santé d'un disque, convmv pour corriger les noms de fichiers sur un vieux disque qui n'est pas en UTF8.

      15) Comme il vaut mieux prévenir que guérir :

      • Activez des analyses SMART régulières couplées à des alertes ! C'est une honte que la plupart des systèmes d'exploitation libres et propriétaires n'activent pas SMART par défaut car depuis près de 20 ans, il est possible de prédire de nombreuses pannes dues au vieillissement d'un disque dur.

      • Faites des sauvegardes en double ou triple. Outre le fait que les sauvegardes sont faites de façon ponctuelle (donc données perdues depuis la dernière sauvegarde), l'expérience montre aussi que faire des sauvegardes ne suffit pas car on découvre justement qu'il y a un problème avec la sauvegarde lorsqu'on en a besoin. Les supports de sauvegarde vieillissent. Les sauvegardes sont souvent stockées à proximité de l'original (ex incendie). Vous pouvez graver vos données importantes (photos) sur des CD/DVD en 2 exemplaires identiques ou plus : ddrescue peut récupérer les données du premier disque et compléter les morceaux manquants avec les suivants. Comme il est peu probable que les secteurs défectueux apparaissent aux mêmes endroits sur les disques, la probabilité est très grande de récupérer l'intégralité des données. Antonio Diaz développe lziprecover en complément de ddrescue pour maximiser la récupération de données compressées sur de tels disques.

      • Entraînez-vous dès maintenant avec un vieux disque. C'est amusant de voir qu'on peut récupérer des données sur des supports très vieux/endommagés et c'est plus facile le jour où l'on a besoin de récupérer des données vraiment importantes.

      Cette signature est publiée sous licence WTFPL

      • [^] # Re: Réaliser plusieurs masters

        Posté par  (site web personnel) . Évalué à 7.

        8) Inutile d'ajouter des options à ddrescue comme indiqué dans la dépêche.

        Pourquoi ?
        J'ai du mal à comprendre l'intéret de ne pas faire une première passe récupération très rapide, en sautant le "raclage", puis une deuxième en accès direct et avec plusieurs passes.

        Entièrement d'accord sur le reste.

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: Réaliser plusieurs masters

          Posté par  . Évalué à 6.

          Je confirme.
          Utilisation classique :
          1 - récupérer vite-fait le maximum de données
          2 - vérifier les fichiers impactés par ce qui manque (ddru_ntfsfindbad pour du NTFS). Parfois on se rend compte que les secteurs défectueux ET utilisés ont déjà été remappés, donc récupérer le reste n'a aucun intérêt
          3 - bricoler pour récupérer le reste (passes multiples, congélateur, changement de position)

        • [^] # Re: Réaliser plusieurs masters

          Posté par  (site web personnel) . Évalué à 3.

          J'oubliais : Si on ne fait pas une une première passe de récupération très rapide, on retombe à peu près sur l'algo de dd_rescue. Et dans ce cas, autant utiliser l'outil de Kurt Garloff pour ses options très fines et ses accès directs.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: Réaliser plusieurs masters

          Posté par  . Évalué à 3.

          8) Inutile d'ajouter des options à ddrescue comme indiqué dans la dépêche.

          Pourquoi ?
          J'ai du mal à comprendre l'intérêt de ne pas faire une première passe récupération très rapide, en sautant le "raclage", puis une deuxième en accès direct et avec plusieurs passes.

          L'algorithme de récupération de ddrescue (sans options) correspond à ce que tu décris :

          Première phase : copie (copying)
          1. une première passe avec des sauts de plus en plus grands lorsqu'une zone lentes ou endommagée est rencontrée (skipping)
          2. idem dans la direction opposée
          3. troisième passe avec des sauts de taille constante

          Deuxième phase : rognage (trimming)
          4. pour chaque zone de saut, lire secteur par secteur depuis le début jusqu'au premier secteur défectueux puis depuis la fin de la zone jusqu'au premier secteur défectueux

          L'option -n arrête l'algorithme ici

          Troisième phase : grattage (scrapping)
          5. chaque zone restante est lue depuis le début secteur par secteur

          Sans options, le programme s'arrête ici

          Quatrième phase : nouvel essai (retry, uniquement avec l'option -r n)
          6. effectue n passes en essayant chaque zone défectueuse secteur par secteur. La direction est inversée à chaque passe.

          Sans options, on a donc le même résultat qu'en exécutant ddrescue avec l'option -n puis en le relançant, la pause en moins. Comme la récupération peut durer plusieurs jours même avec l'option -n, il est peu probable qu'on soit devant l'ordi pour lancer la suite. Ddrescue affiche l'avancement de la récupération de sorte qu'on sait à quelle étape on se trouve. Le fichier mapfile sauvegarde également l'état ce qui permet d'interrompre la récupération n'importe quand - par exemple pour exécuter ddru_ntfsfindbad - et si besoin, de la reprendre plus tard.

          L'option -r n'a pas beaucoup d'intérêt, surtout si on n'a pas encore essayé sans. Le taux de réussite en retry sur des secteurs défectueux est de l'ordre de 1%.

          L'option -d améliore surtout la récupération dans le cas où le noyau groupe les accès disques. Dans d'autres cas, il peut ralentir la récupération. Si l'option -n est utilisée avec un --sector-size incorrect, aucune donnée ne sera récupérée ! Donc à moins d'avoir identifié un problème, il est généralement inutile d'utiliser cette option.

          Cette signature est publiée sous licence WTFPL

          • [^] # Re: Réaliser plusieurs masters

            Posté par  (site web personnel) . Évalué à 2.

            D'accord… la doc n'est pour moi pas assez claire sur ce point. Et j'utilise trop peu souvent ddrescue pour l'avoir compris plus tôt.

            "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

            • [^] # Commentaire supprimé

              Posté par  . Évalué à 2.

              Ce commentaire a été supprimé par l’équipe de modération.

      • [^] # Re: Réaliser plusieurs masters

        Posté par  . Évalué à 8.

        6) Conserver un journal de toutes les commandes et de leur sorties.

        Pour faire ça automatiquement :

        script -a journal.script
        Ça vous relance votre shell, mais en enregistrant tout (entrées et sorties) dans journal.script (en l'ajoutant à la fin du fichier (-a pour append) au cas où vous utilisez cette commande plusieurs fois).

        Je tiens ça des excellents conseils de mise à jour de Debian : https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.fr.html#record-session

        Car il arrive toujours un moment où « mais pourtant tout à l'heure quand j'ai fait ça, ça m'a donné ça ! Pourquoi ça a changé ? Attends, je remonte dans l'histo… argh ! Je ne peux pas remonter assez loin… ».

      • [^] # Re: Réaliser plusieurs masters

        Posté par  . Évalué à 4.

        Concernant les sauvegardes, une bonne pratique est l'utilisation de Parchive qui ajoute des données permettant la correction d'erreur.
        On peut jouer sur la quantité de redondance en fonction de la fiabilité du support : plus haute sur un CD/DVD gravé, plus faible sur un disque en bonne santé ou une clé USB neuve.

        La difficulté est que cela s’accommode très mal d'une sauvegarde type rsync où l'on ne crée pas d'archive mais où on manipule une grande quantité de fichiers.

        Je ne sais pas si il existe de FS (ZFS ?) ou des surcouches bloc (LVM, Device Mapper) qui permettent d'ajouter de la correction d'erreur…

        • [^] # Re: Réaliser plusieurs masters

          Posté par  (site web personnel) . Évalué à 2.

          Je ne sais pas si il existe de FS (ZFS ?) ou des surcouches bloc (LVM, Device Mapper) qui permettent d'ajouter de la correction d'erreur…

          Euh bah RAIDx, x!=0, déjà ?

        • [^] # Re: Réaliser plusieurs masters

          Posté par  (site web personnel) . Évalué à 2.

          Pour les sauvegardes, tu peux aussi utiliser LZIP. La doc de Lziprecover contient un exemple intéressant de récupération à partir de CD corrompu.
          Couplé avec DAR ça pourrait être assez efficace.

          Côté système de fichier, Btrfs et ZFS proposent tous deux la correction d'erreur.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # Alternative a bcdboot.exe et bootsect.exe pour GNU/Linux

    Posté par  (site web personnel) . Évalué à -2.

    Merci pour le partage d'experience…

    Par hazard connais tu un moyen de faire ce que bootsect.exe fait sans pour autant re/booter windows ?
    (ie: machine sans CDR et sans USB bootable)

    Place a la magie noire :

    copy %drive%\windows\system32\bcdboot.exe \local\

    \local\bcdboot.exe %drive%\windows /s %drive%

    copy %drive%\windows\system32\bootsect.exe \local\

    \local\bootsect.exe /nt60 %drive% /force

    gpg:0x467094BC

  • # G4U et MBR

    Posté par  . Évalué à -6. Dernière modification le 04 décembre 2015 à 04:04.

    J'ai un système multiboot pour lequel je charge des MBR au besoin pour Freebsd Linux et, 'peut-être' Windows.

    Comme je ne maitrise pas tous les chargeurs de démarrages je me suis dit que j'allais simplement faire une copie de chacun d'eux sur chaque système et les charger en les appelant depuis le systeme que j'utilise afin d'économiser la configuration de chacun des chargeurs de démarrages.

    J'ai vu DD et découvert dans cette page G4U qui permettait de sauvegarder les MBR.

    Savez vous si la fonctionnalité de Uefi peu me géner ?

    Je pensais faire une petite marche à suivre pour expliquer le fonctionnement si la démarche est validée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.