Table des matières

Utilisation de DDrescue pour la récupération de données

Affreusement récupéré d'un billet de blog MicroLinux.

Prérequis : démarrer sur une clé Linux bootable, par exemple. Disposer un shell root et du paquet “ddrescue”.

Première étape : identifier le nom du fichier de périphérique de bloc (le disque et la partition concerné)

Utiliser la commande suivante pour lister les disques et partitions :

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 931.5G  0 disk
├─sda1   8:1    0     1G  0 part /boot
├─sda2   8:2    0 922.5G  0 part /
└─sda3   8:3    0     8G  0 part [SWAP]
sdb      8:16   0 238.5G  0 disk
├─sdb1   8:17   0     8M  0 part
├─sdb2   8:18   0   500M  0 part
├─sdb3   8:19   0     8G  0 part
└─sdb4   8:20   0   230G  0 part

Ici, pour l'exemple, on va tenter de récupérer des données sur la partition de 230G (donc sdb4, que l'on pourra appeler par le fichier /dev/sdb4).

Seconde étape : utiliser ddrescue pour créer une image du disque dur "sans erreurs de stockage"

On utilise ddrescue de la manière suivante :

# ddrescue -f -n /dev/sdb4 rescue.img rescue.log

Si la commande précédente s'arrête du fait d'erreurs trop importantes sur le disques, il est possible de la relancer de la manière suivante :

# ddrescue -d -f -r3 /dev/sdb4 rescue.img rescue.log

Au terme de la récupération, on dispose donc d'un fichier image du disque dur :

# ls -lh rescue.img
-rw-r--r--. 1 root root 230G Apr 21 17:22 rescue.img

Troisième étape : accéder au donner restaurées dans l'image

On crée tout d'abord un point de montage pour monter l'image du disque :

# mkdir -v /mnt/rescue
mkdir: created directory '/mnt/rescue'

On monte ensuite l'image du disque en loopback :

# mount -v -o loop rescue.img /mnt/rescue/
mount: /dev/loop0 mounted on /mnt/rescue.

Et on peut du coup utiliser ls ou tout autre outil pour accéder au données :

# ls /mnt/rescue/
bin   dev  home  lib64       mnt  proc  run   selinux  sys  usr
boot  etc  lib   lost+found  opt  root  sbin  srv      tmp  var