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.

Table des matières
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
- puis saisissez la commande APT suivante :
sudo apt install gddrescue
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
- Une fois installé, la commande ddrescue devient disponible dans le terminal CygWin
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 -f -d -r3 /dev/sda test.img test.logfile
Voici un descriptif des options :
- -f : écrasement du périphérique de sortie ou de la partition
- -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.
- 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.
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.
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