A qui n'est-il pas arrivé d'avoir un disque qui lui claque dans les pattes sans avoir eu le temps d'en sauvegarder le contenu ? Heureusement, avec un Linux, allez pouvoir avec un peu de chance retrouver vos précieuses données...
Lorsque les ennuis surviennent, la première chose à faire est de ne plus toucher à rien. Le mieux alors est d'éteindre la machine et d'aller quelque part trouver un CD Live d'une distribution Linux. A priori toutes conviennent car il ne nous faut que les outils de base : dd, gzip, fsck.*, mount.* et ssh. La seule chose qui peut poser problème sont les distributions trop intelligentes qui s'amusent à monter tous les disques qu'elles trouvent. Le mieux est donc d'utiliser une distribution de type rescue linux.
La première chose que vous pouvez faire est de monter la partition en lecture seule pour tenter en toute simplicité d'en sauvegarder le contenu. Pour cela il faut utiliser l'option -ro de la commande mount :
Si les données sont trop atteintes pour pouvoir monter le disque, il faut passer à la vitesse au dessus. Pour ne prendre aucun risque, la régle numéro un est de faire comme le chat qui chipent la bouffe de ses voisins : recopier le plus furtivement possible la partition en danger, et l'emmener dans un coin calme pour travailler dessus. Surtout ne jamais faire ce qui suit sur la "vraie" partition sous peine de voir empirer les choses : l'ennemi ici, c'est l'écriture.
Tout d'abord donc, il nous faut récupérer le contenu de la partition dans un fichier. Soit nous disposons sur notre machine de deux disques, dont un en bon état, auquel cas nous montons ce disque et nous créons notre fichier dessus :
Si vous n'avez pas de disque disponible, la même chose peut être faite à travers le réseau vers une machine disposant de SSH :
Maintenant que nous avons notre fichier partition, nous allons pouvoir lancer une procédure de correction sur celui-ci :
Si tout c'est bien passé, l'image est réparée. Nous pouvons la monter pour récupérer les précieuses données :
Si la partition problématique est formatée avec EXT3, il se peut que l'on ait un refus d'obstacle à l'étape précédente pour cause de "superblock" introuvable.
Il y a (au moins) deux manières de récupérer la position des superblocks. La première consiste à simplement rechercher la chaîne superblock dans l'image du disque que nous avons créée plus haut :
La seconde solution consiste à fabriquer une fausse image disque de la taille exacte de la partition d'origine que nous allons ensuite formatter en ext3 pour obtenir la position des superblocks :
Une fois que l'on connaît la position des superblocks, il suffit de lancer un réparation :
Voilà, avec peu d'effort, l'ami Linux peut encore nous sauver la vie avec sa vision Unixienne "Tout n'est que fichier, sauf bien sur lorsque ce n'en est pas un"
Légèrement hors sujet, je profite juste de ce billet pour citer l'outil photorec. Disponible dans toutes les bonnes distributions, cet utilitaire est capable d'analyser une partition et d'en retirer des fichiers perdus. A garder dans sa boîte à outils.
- répondre
Dab, le 29 June, 2007 - 14:30voir aussi TestDisk & PhotoRec ( http://linuxfr.org/2007/06/27/22669.html)
- répondre
Ulhume, le 30 June, 2007 - 10:22Ah bé je connaissais pas pas, merci !
- répondre
Syeric , le 29 May, 2008 - 19:49Salut
Personnellement en cas de crash vraiment sévère, dd ne suffisait plus. Je passe alors par dd_rescue, un script bien sympa. J'ai fait une petite page explicative : dead://www.linuxpourlesnuls.org/v4/modules.php?name=wiki_lpln&page=tutoriaux:systeme:recuperation_donnees
En lien en bas un autre tutoriel beaucoup plus complet qui va de la récupération via dd ou dd_rescue au traitement des fichiers en mauvais état.
Bonne soirée
Syeric
- répondre
Ulhume, le 30 May, 2008 - 10:20Effectivement intéressant cet outil !
- répondre
adqtvn , le 9 June, 2008 - 21:44Bonjour,
Je viens de lire ton article.
Je souhaiterai te soumettre, Ulhume, mon problème de perte de données assez particulière :
1 - disque externe usb formaté avec la commande /sbin/mke2fs -j /dev/sdx
2 - j'ai commencé à mettre mes données dessus
3 - plus tard, lorsque j'ai refait une installation d'une FEDORA CORE 6, j'ai laissé ce disque usb branché
4 - FEDORA a vu les deux disques (interne + externe usb) et m'a proposé de les formater en un seul volume LVM
5 - j'ai dit oui et il a commencé à formater
6 - quand je me suis rendu compte car la led du disque USB était en rouge, j'ai coupé l'alimentation du disque externe
7 - évidemment depuis, je n'ai plus touché à ce disque !!!
Question : puis-je espérer récupérer quelque chose si j'ai encore un superbloc valide ?
Si je trouve un spblock valide, comment pourrais-je recréer une partition normale (non LVM) et restaurer l'arborescence ?
Si tu as une suggestion ... merci d'avance
- répondre
Dab, le 10 June, 2008 - 17:07As tu testé testdisk mentionné en commentaire ?
Sinon tu peux toujours éplucher http://tldp.org/HOWTO/Ext2fs-Undeletion.html
- répondre
adqtvn , le 10 June, 2008 - 19:37Bonjour,
Oui, j'ai découvert testdisk+photorec depuis le jour où j'ai eu ce problème (2006). Après plusieurs correspondances avec Christophe G., nous n'avions pas avancé à ce sujet.
Il y a quelques jours, j'ai de nouveau fait appel à testdisk version 6.9 mais il trouve bien une partition LVM et d'après ce que j'ai écrit plus haut, c'est normal mais ce n'est pas bon.
Le cas cité plus haut est assez particulière donc nécessite une intervention manuelle je crois.
- répondre
M. Récupération De Données , le 25 June, 2008 - 15:27Wow, merci beaucoup pour ce petit truc.. Je vais probablement mettre à jour mon propre petit guide de récupération de données pour faire référence à cette manipulation (avec crédits, bien entendu). Merci!
- répondre
Ulhume, le 25 June, 2008 - 15:37@M. Recupération, de rien
Je rajouterais aussi un chapitre sur S.M.A.R.T. sur ton guide.
- répondre
M. Récupération De Données , le 26 June, 2008 - 16:02C'est noté, merci.
- répondre
stephdl , le 21 August, 2008 - 23:19Si vous n'avez pas de disque disponible, la même chose peut être faite à travers le réseau vers une machine disposant de SSH :
dd if=/dev/hda1 conv=noerror,sync | gzip | user@machine "gunzip > hda1.img"
ne faut il pas lire
dd if=/dev/hda1 conv=noerror,sync | gzip | ssh user@machine "gunzip > hda1.img"
?
- répondre
Ulhume, le 24 August, 2008 - 08:28yep, merci, c'est corrigé
Poster un nouveau commentaire