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”.
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).
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
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