Menu Fermer

ddrescue : Comment récupérer les données d’un disque endommagé

Cette entrée fait partie d'une série de 17 sur 17 dans la série Récupérer et restaurer ses données : le dossier

ddrescue est un outil de récupération de données. Il copie des données d’un fichier ou d’un périphérique de bloc (SSD, disque dur, CD-Rom etc.) à un autre, essayant de sauver les bonnes parties d’abord en cas d’erreurs de lecture.
Il fonctionne comme dd (data dump) mais il ne lit et ne copie pas le contenu des secteurs défectueux.
De ce fait, la copie est beaucoup plus rapide.
C’est donc un outil idéal pour récupérer les données d’un support de stockage endommagé.
Toutefois, il n’a peut d’intérêt dans le cas d’un disque RAW puisque la structure des partitions de disque est endommagée.

Dans ce tutoriel, je vous explique comment récupérer ses données avec ddrescue.

ddrescue : Comment récupérer les données d'un disque endommagé

Comment installer ddrescue

Sur Debian, Ubuntu, Mint, …) avec APT

  • Ouvrez le terminal Ubuntu par la recherche d’application ou par le raccourci clavier CTRL+ALT+T. Plus de détails : Comment ouvrir terminal Ubuntu
Ouvrir un terminal sur Ubuntu depuis la liste des applications
  • puis saisissez la commande APT suivante :
sudo apt install gddrescue
Installer ddrescue sur Ubuntu

Sur Fedora, Redhat avec Yum

Installez ddrescue sur les distributions Linux à base Redhat avec yum :

yum -y install ddrescue

sur Windows

Il n’existe pas de version de ddrescue pour Windows.
De plus, il n’est pas non plus disponible sur WSL.
Mais vous pouvez l’utiliser à travers CygWin.

Voici comment installer ddrescue sur Windows :

  • Installez CygWin en suivant ce tutoriel, dans la sélection des paquets ddrescue pour rendre disponible dans Windows :
  • Si CygWin est déjà installé, ouvrez un terminal et utilisez apt-cyg pour installer un nouveau paquet :
apt-cyg install ddrescue
Comment installer ddrescue pour Windows avec CygWin
  • Une fois installé, la commande ddrescue devient disponible dans le terminal CygWin
Comment installer ddrescue pour Windows avec CygWin
Bravo ! vous avez réussi à installer ddrescue pour Windows

Comment utiliser ddrescue

Voici la syntaxe de ddrescue :

ddrescue <options> <source> <destination> <fichier_log>
  • La source est un périphérique de bloc comme /dev/sda ou /dev/nvmeXnY ou partition de disque
  • La destination peut être un autre périphérique de bloc ou un fichier image

Par exemple pour copier les données de /dev/sda vers le fichier test.img en créant le journal test.logfile :

 ddrescue -d -r3 /dev/sda test.img test.logfile

Voici un descriptif des options :

  • d : utiliser l’accès à disque direct et d’ignorer le cache du noyau
  • -r3 : réessayer les secteurs des mauvais secteurs 3 fois avant d’abandonner. Remarque: sur un lecteur de défaillance, vous voudrez peut-être éliminer cette option la première fois afin de ne pas perdre de temps à marteler sur des secteurs défectueux et de risquer une défaillance du lecteur. Vous pouvez toujours utiliser le fichier journal pour revenir en arrière et réessayer les secteurs défectueux après avoir obtenu une image du premier balayage.
  • /dev/sda est le lecteur que nous sauverons.. mais cela peut être aussi une partition de disque comme /dev/sdaX
  • test.img est le nom du fichier image
  • test.logfile est le nom du logfile ou map file. Toujours utiliser un map file. Cela vous permet de reprendre une image interrompue au point que vous avez laissé ou de réessayer les secteurs défectueux après une passe initiale. Sans logfile, vous devrez tout recommencer

Lors de la copie des données, l’utilitaire affiche un tableau avec le statut de la copie.

Comment utiliser ddrescue pour récupérer les données
  • Initial status: Lorsque ddrescue est relancé suite à une interruption, le fichier de log permet de continuer l’action en cours. La ligne qui suit fait un récapitulatif de tout ce qui a déjà été traité. Les deux lignes ne sont pas présentes lors du premier lancement
  • ipos opos montre la position de début dans le support entrée et le support sortie. Zéro lors du premier lancement.
  • Current rate Average rate Débit actuel et débit moyen d’écriture dans le support sortie. Une valeur faible signifie une difficulté de lecture du support émetteur
  • rescued pct rescued Taille déjà récupérée ainsi que le pourcentage par rapport à la totalité de l’espace émetteur.
  • run time Temps écoulé depuis le début de la commande exprimé en jours heures minutes.
  • remaining time Temps estimé pour la fin de la commande exprimé en jours heures minutes ou N/A lorsque ce n’est pas connu
  • time since last successful read Temps écoulé depuis une dernière lecture réussie exprimé en heures minute seconde
  • Scraping failed blocks… (forwards) Type d’action actuellement en cours. Evolue en fonction de l’avancement de la récupération. Dans ce cas, on est à l’étape de lecture des blocs qui n’ont pas été lus lors du premier passage rapide.

Comment récupérer ses données avec ddrescue

Récupérer les données d’un disque vers un fichier image

Voici comment utiliser ddrescue pour récupérer les données du disque /dev/sda vers le fichier image /home/mak/sda_rescue.img :

sudo ddrescue -f -n /dev/sda /home/mak/sda_rescue.img /home/mak/rescue.log

Pour copier uniquement les blocs endommagés et essayez 3 fois de lire à partir de la source avant d’abandonner :

ddrescue -d -f -r3 /dev/sda /home/mak/sda_rescue.img /home/mak/rescue_defectueux.log
  • -r : Utilisez un accès direct au lecteur et sautez n’importe quel cache
  • -Rn : Essayez N fois pour sauver le bloc

Enfin pour restaurer les données depuis le fichier image vers un disque, on utilise l’option -f.
Ici on spécifie comme source l’image dont les données sont restaurées vers /dev/sda :

sudo ddrescue -f test.img /dev/sda restore.logfile

Mais on peut aussi récupérer les données avec la commande dd.
Par exemple ici on restaure les données du fichier test.img vers le disque /dev/sdc :

sudo dd if=test.img of=/dev/sdc

Récupérer les données de disque à disque (clone)

On peut aussi aller plus vite en effectuant un clone de disque, c’est à dire une copie disque à disque.
Tout d’abord, copiez chaque bloc sans lecture d’erreur et connectez-vous les erreurs à /root/rescue.log.

sudo ddrescue -f -n /dev/sda /dev/sdb /root/rescue.log

On peut aussi reprendre l’exemple précédent pour copier uniquement les mauvais blocs et essayez 3 fois de lire à partir de la source avant d’abandonner.

sudo ddrescue -d -f -r3 /dev/sdb /dev/sdc /root/rescue.log

Les disques source et de destination sont identiques.

Comment récupérer les données de disque à disque (clone)

ddrescueview : visualiser la carte de vos données

L’utilitaire drescuelog permet d’obtenir des informations sur le fichier de map et même de le modifier.
Par exemple :

drescuelog -t /home/mak/rescue.log

Mais l’utilitaire ddrescueview va encore plus loin car il permet d’afficher un fichier map en graphique.
Ainsi, il donne la possibilité de cartographier la structure des données.
Notamment, cela permet de visualiser les blocs sains et les blocs défectueux.

ddrescueview : visualiser la carte de vos données

Utilisez l’option -i pour définir la position de départ de la copie en octet :

ddrescue -i30GiB /dev/sda output.img output.mapfile
Naviguer dans la série<< DiskGenius : récupérer/réparer une partition de disque perdue, supprimée, RAW ou non accessible