FR EN

Récupérer des fichiers perdus sur une partition ext3

Vous possédez ordinateur ou un serveur sous Linux et la, c’est le drame, vous supprimez définitivement par erreur un ou plusieurs fichiers importants, et pas de sauvegarde.

Dans ce cas, pas de panique, gardez la tête froide, et procédez avec méthode. Vous arriverez peut-être à récupérer vos fichiers.

Avant toute chose, il faut partir du principe que moins on écrit sur la partition ou était stocké le fichier, et plus vous aurez de change de récupérer vos fichiers. Il faut donc redémarrer via un “Live CD” ou bien au moins remonter la partition en lecture seule. Attention pour le second cas, il faut impérativement fermer tout les programmes utilisant la partition en question, ce qui est plus ou moins difficile selon le cas. Dans le cas ou comme moi, vous souhaitez récupérer des fichiers sur la partition /home (représenté par /dev/sda2 dans notre exemple), et que vous êtes logué en root (pas par sudo) dans ce cas, tapez la commande suivante :

mount -o remount,ro /home

Si vous avez un message du style occupé, c’est raté, et dans ce cas, le plus simple est de redémarrer sur un “Live CD” ou “Live USB”.

Une fois la partition protégée de toute écriture, nous allons installer le paquet nécessaire pour la récupération :

apt-get install ext3grep

Une fois la commande magique installée, il va falloir apprendre à l’utiliser. Pour commencer, il est recommandé d’avoir de la place, beaucoup de place même, disons qu’en général, il est plus simple de récupérer une grosse partie du disque dur puis ensuite de recopier juste ce qui nous intéresse. Branchez donc un disque dur externe puis placez vous dans le dossier de ce disque dur.

cd /media/xxxxxxx
(Remplacez les xxxxxxx par le dossier monté, il se peut que vous ayez à monter manuellement votre disque dur.

Ensuite, il est important de repérer la partition ou est stocké les données à récupérer :

mount

Repérez la ligne contenant la ligne “/home/” (dans notre exemple). Chez moi, la partition /home est /dev/sda3.

Ensuite, on peut lancer une première fois la commande pour voir un peu tous les fichiers récupérables :

ext3grep /dev/sda3 --dump-names

Ceci aura pour but de créer deux fichiers index de votre disque dur. La commande effectue donc un premier scan qui peut durer un certain temps et affichant des informations qui peuvent être étranges. Enfin la commande va afficher une liste de fichier et dossier pouvant être récupérer depuis le disque dur, voici un exemple :


test/
test/exemple1
test/exemple2
 

Ces fichiers étant stockés dans la partition /home, il faut imaginer le chemin complet du résultat, par exemple ici, le fichier exemple1 était stocké dans /home/test/exemple1.

Il est bon de savoir que cet outils ne permet pas (à ma connaissance) de casser votre disque dur. Ext3grep se contente de scanner et récupérer des fichiers sur un disque dur. Le seul “risque” est de remplir une partition pendant la récupération des données car elle prend beaucoup de place.

Récupérer un fichier

Si vous souhaitez ensuite ne récupérer qu’un fichier, la commande est très simple :

ext3grep /dev/sda3 --restore-file "test/exemple1"

Ceci devrait être très rapide, le scan connaissant l’emplacement du fichier sur le disque dur.

Il est à noter qu’il est possible que plusieurs versions de ce fichier peut exister sur le disque dur. Par exemple, si on créer ce fichier, on le supprime du disque dur, puis on le recréer, le fichier peut être stocké physiquement dans un autre emplacement. La commande va récupérer automatiquement la version la plus récente du fichier.

Récupérer plusieurs fichiers

La commande ext3grep ne permet malheureusement pas de récupérer un dossier spécifique facilement. Même si certains proposent des solutions plus ou moins simple, nous allons nous contenter ici de lancer une récupération complète. Cependant, afin d‘éviter de récupérer tout est n’importe quoi, nous allons choisir un date à partir de laquelle on souhaite récupérer tous les fichiers. Par exemple, nous souhaitons récupérer tous les fichiers supprimés depuis le 01/05/2011. On va taper la commande suivante :

ext3grep /dev/sda3 --restore-all --after=$(date -d '01/05/2011 00:00:00' +"%s")

Patientez quelques minutes ou dizaines de minutes (quelques heures?) suivant la taille de votre disque dur, la quantité de données à récupérer et les performances de votre ordinateur.

Une fois terminé, un dossier RESTORED_FILES est créé, vous n’avez plus qu’a piocher dedans ce que vous souhaitez récupérer en espèrant que vous trouverez votre bonheur.








Liste des commentaires

Kamryn : Yup, that'll do it. You have my appreciaiotn.
Betsy : Caillng all cars, calling all cars, we're ready to make a deal.
Raynoch : I thank you humbly for sharing your wsidom JJWY
Latricia : I was looking everywhere and this popepd up like nothing!

Vous avez la parole