dmesg.fr:~#

display message

Restaurer des fichiers effacés sous Linux avec ext3grep

trashcan undeleteext3grep est un utilitaire qui permet de récupérer des fichiers effacés sous Linux.

Il récupère des répertoires et des fichiers supprimés sur des partitions au format EXT3.

Important : La tentative de récupération de fichiers supprimés doit se faire le plus vite possible. Si vous attendez trop longtemps, la récupération peut échouer, ou ne s'effectuer que partiellement.

ext3grep travaille sur un système de fichiers démonté ou sur une image disque (générée avec l'utilitaire dd par exemple).


Récupération d'un fichier supprimé

Exemple : récupération du fichier /home/td/REPERTOIRE/FICHIER qui a été effacé sur le disque dur de la machine MACHINETEST.


Préparez  un live CD et un disque dur externe.

- Démarrez le Live CD sur MACHINETEST.

- Branchez votre disque externe sur MACHINETEST, il devrait monter automatiquement.


Recherche de fichiers supprimés

Installez ext3grep :

apt-get install ext3grep

Repérez la partition de votre disque dur sur laquelle vous avez effacé le fichier :

fdisk -l

Exemple :

/dev/sdb1   *           1         367     2947896   83  Linux
/dev/sdb2             368         391      192780    5  Etendue
/dev/sdb5             368         391      192748+  82  Linux swap / Solaris


Si la partition est montée, faites un umount :

umount /dev/sdb1

Recherchons le nom du fichier effacé avec ext3grep :

ext3grep /dev/sdb1 --search FICHIER

Résultat :

Running ext3grep version 0.10.1
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 23
Minimum / maximum journal block: 328183 / 344584
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1914003227 = Mon Aug 26 21:33:47 2030
Number of descriptors in journal: 15452; min / max sequence numbers: 6404 / 7880
Blocks containing "FICHIER": 94213 328752 (allocated) 352295 (allocated) 352399 (allocated) 352688 (allocated) 352811 (allocated) 352970 (allocated) 353011 (allocated) 353032 (allocated) 454891 (allocated) 500277 (allocated) 500278 (allocated) 500279 (allocated) 500280 (allocated) 500281 (allocated) 500282 (allocated) 501831 (allocated) 501832 (allocated) 507369 (allocated) 507370 (allocated) 509585 (allocated) 511229 (allocated) 511233 (allocated) 511234 (allocated) 512945 (allocated) 512946 (allocated) 512948 (allocated) 512949 (allocated) 512953 (allocated) 512954 (allocated) 512955 (allocated) 512957 (allocated) 512958 (allocated) 512959 (allocated) 512960 (allocated) 512961 (allocated) 512962 (allocated) 512963 (allocated) 512964 (allocated) 512965 (allocated) 512966 (allocated) 513388 (allocated) 518574 (allocated) 518579 (allocated) 518583 (allocated) 518954 (allocated) 518955 (allocated) 518999 (allocated) 519000 (allocated) 519672 (allocated) 519673 (allocated) 519674 (allocated) 521107 (allocated) 521109 (allocated) 521111 (allocated) 521112 (allocated) 521113 (allocated) 521345 (allocated) 521346 (allocated) 526419 (allocated) 526528 (allocated) 527352 (allocated) 528042 (allocated) 548507 (allocated) 549949 (allocated) 549956 (allocated) 554314 (allocated) 554319 (allocated) 555439 (allocated) 557772 (allocated) 600174 (allocated) 706560 (allocated)


Notez le numéro du 1er bloc, et tapez :

ext3grep /dev/sdb1 --ls --block 94213

Résultat :

Running ext3grep version 0.10.1
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 23
Minimum / maximum journal block: 328183 / 344584
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1914003227 = Mon Aug 26 21:33:47 2030
Number of descriptors in journal: 15452; min / max sequence numbers: 6404 / 7880
Group: 2

Block 94213 is a directory. The block is Unallocated

          .-- File type in dir_entry (r=regular file, d=directory, l=symlink)
          |          .-- D: Deleted ; R: Reallocated
Indx Next |  Inode   | Deletion time                        Mode        File name
==========+==========+----------------data-from-inode------+-----------+=========
   0    1 d   16223  D 1917603531 Mon Oct  7 13:38:51 2030  drwxr-xr-x  .
   1    2 d  168338                                         drwxr-xr-x  ..
   2  end r   16224  D 1917603531 Mon Oct  7 13:38:51 2030  rrw-r--r--  FICHIER


Le fichier FICHIER apparait, c'est bon signe.


Restauration du FICHIER effacé

Placez-vous sur votre disque dur externe :

cd /media/votre_disque_dur_externe

Remplacez "votre_disque_dur_externe" par le point de montage de votre disque dur externe. C'est à cet endroit que seront restaurés les fichiers effacés.


Avec ext3grep, indiquez au paramètre --restore-file le chemin complet du fichier que vous souhaitez récupérer :

ext3grep /dev/sdb1 --restore-file home/votre_user_linux/REPERTOIRE/FICHIER

Résultat :

Searching group 0 : .....
Searching group 1 : .....
...
Restoring home/td/REPERTOIRE/FICHIER


Les fichiers restaurés se trouvent dans le répertoire RESTORED_FILES. L'arborescence est identique à celle du fichier original. Exemple :

RESTORED_FILES/home/td/REPERTOIRE/FICHIER


Il ne vous reste plus qu'à copier le fichier à son endroit d'origine. Redémarrez votre machine normalement, puis branchez votre disque dur externe, et recopiez les fichiers restaurés vers votre disque dur interne.


Si vous avez une partition /home séparée

Si vous avez une partition /home séparée, vous n'avez pas besoin de Live CD ni de disque dur externe. De plus, les opérations de recherche et de restauration de fichiers seront bien plus rapides !

- Ouvrez une console : ALT + F1
- Connectez-vous en tant que root
- Arrêtez GDM :

/etc/init.d/gdm stop

- Démontez la partition /home :

umount /home

- Créez un répertoire de restauration sur votre partition principale :

mkdir /media/restauration_fichiers

Procédez de la même manière que ci-dessus, en indiquant le bon nom de partition. Pour la commande de restauration, ne spécifiez pas "home" :

ext3grep /dev/sdb1 --restore-file votre_user_linux/REPERTOIRE/FICHIER


Récupération de fichiers supprimés à partir d'une date donnée


Supposons que vous souhaitez récupérer tous les fichiers qui ont été effacés de votre disque dur après le 5 Octobre 2010. Il faut d'abord convertir cette date en date machine :

date -d  '10/05/2010' +%s

Résultat : 1286229600


Restauration de tous les fichiers supprimés après le 05/10/2010 :

ext3grep /dev/sdb1 --restore-all --after=1286229600

Attention : une restauration totale peut durer longtemps, car des fichiers système (configuration, commandes, etc.) seront aussi restaurés, puisque le point de départ est "/".


Lister les fichiers d'un répertoire effacé

Vous vous souvenez du nom du répertoire que vous avez effacé, mais vous ne savez plus exactement comment s'appelle le fichier à récupérer.

ext3grep /dev/sdb1 --search REPERTOIRE

Si le répertoire est trouvé, la commande affiche une liste de blocs :

...
Blocks containing "REPERTOIRE": 66059 (allocated) 66094 (allocated) 180224 (allocated) 192512 (allocated)


Indiquez la valeur du premier bloc à ext3grep et lister :

ext3grep /dev/sdb1 --ls --block 66059

Exemple de résultat :

...
          .-- File type in dir_entry (r=regular file, d=directory, l=symlink)
          |          .-- D: Deleted ; R: Reallocated
Indx Next |  Inode   | Deletion time                        Mode        File name
==========+==========+----------------data-from-inode------+-----------+=========
   0    1 d   40801                                         drwxr-xr-x  .
   1    2 d       2                                         drwxr-xr-x  ..
   2    3 r   40802                                         rrw-r--r--  .bashrc
   3    4 r   40803                                         rrw-r--r--  .bash_logout
   4    5 r   40804                                         rrw-r--r--  .profile
   5    6 d   40805                                         drwx------  .ssh
   6    7 r   40807                                         rrw-------  .bash_history
   7    8 d   40814                                         drwx------  .w3m
   8    9 d   40809                                         drwxr-xr-x  squid
   9   10 r   40808                                         rrw-r--r--  nsswitch.conf.bak
  10   11 r   40815                                         rrw-------  .lesshst
  11   12 r   40816                                         rrw-r--r--  td_a.txt
  12   13 d   40817                                         drwxr-xr-x  td_rep
  13  end d   40819  D 1286457603 Thu Oct  7 15:20:03 2010  drwxr-xr-x  REPERTOIRE


Pour voir le contenu du répertoire "REPERTOIRE", indiquez le numéro d'inode à ext3grep et lister :

ext3grep /dev/sdb1 --ls --inode 40819

Exemple de résultat :

...
          .-- File type in dir_entry (r=regular file, d=directory, l=symlink)
          |          .-- D: Deleted ; R: Reallocated
Indx Next |  Inode   | Deletion time                        Mode        File name
==========+==========+----------------data-from-inode------+-----------+=========
   0    1 d   40819  D 1286457603 Thu Oct  7 15:20:03 2010  drwxr-xr-x  .
   1    2 d   40801                                         drwxr-xr-x  ..
   2    3 r   40820  D 1286457603 Thu Oct  7 15:20:03 2010  rrw-r--r--  FICHIER
   3    4 r   40821  D 1286457603 Thu Oct  7 15:20:03 2010  rrw-r--r--  FICHIER1
   4  end r   40822  D 1286457603 Thu Oct  7 15:20:03 2010  rrw-r--r--  FICHIER2
 


Autres fonctions ext3grep

ext3grep propose de nombreuses options de recherche et de restauration.

Exemples extraits de la page manuel :

Recherche de fichiers appartenant au GID 1000 :

ext3grep /dev/sdb1 --ls --group 1000

Lister les fichiers contenant le mot "toto" :

ext3grep /dev/sdb1 --dump-names | grep ’toto’

Copyright dmesg.fr - All Rights Reserved.