GNU ddrescue

Outil de récupération de données qui copie les données d'un périphérique bloc défaillant ou endommagé, en réessayant et en sautant intelligemment les secteurs défectueux à l'aide d'un mapfile. Data recovery tool that copies data from a failing or damaged block device, retrying and skipping bad sectors intelligently using a mapfile.

↗ https://www.gnu.org/software/ddrescue/

Overview

GNU ddrescue recovers data from failing storage — dying hard drives, scratched optical media, corrupted flash — by copying good sectors first and only retrying damaged areas afterward, minimizing further stress on a dying device. It’s used in forensic acquisitions and data recovery when a source disk is unreliable, working from a “mapfile” that logs progress so an interrupted rescue can resume exactly where it left off.

Common Usage

First pass — copy everything readable, skip errors quickly

ddrescue -n /dev/sdb evidence.img rescue.mapfile

Second pass — retry only the bad areas, more aggressively

ddrescue -d -r3 /dev/sdb evidence.img rescue.mapfile

Full run with direct I/O and verbose logging

ddrescue -d -v /dev/sdb evidence.img rescue.mapfile

Resume an interrupted rescue (mapfile makes this safe)

ddrescue /dev/sdb evidence.img rescue.mapfile

Image to another disk of the same/larger size instead of a file

ddrescue -d /dev/sdb /dev/sdc rescue.mapfile

Tips

  • Always keep the mapfile — it’s what makes ddrescue resumable and lets you separate “fast first pass” from “slow retry pass”
  • -n (no-scrape) skips slow retries on the first pass so you grab all the easy data before the drive potentially degrades further
  • -d uses direct disk access, bypassing the kernel cache — usually more reliable on failing hardware
  • For forensic work, hash the resulting image afterward (sha256sum) since ddrescue itself doesn’t compute hashes
Help / Man page
Usage: ddrescue [options] infile outfile [mapfile]

  -b, --sector-size=<bytes>    sector size of input device [512]
  -d, --idirect                use direct disc access for input file
  -f, --force                  overwrite output device or partition
  -n, --no-scrape              skip the scraping phase
  -r, --retry-passes=<n>       exit after given number of retry passes (-1=infinite)
  -R, --reverse                reverse direction of copying operations
  -s, --size=<bytes>           maximum size of input data to be copied
  -v, --verbose                verbose operation
      --min-read-rate=<bytes>  minimum read rate of good areas in bytes/s

  mapfile records rescue status; required to resume a rescue.

Vue d’ensemble

GNU ddrescue récupère les données d’un stockage défaillant (disques durs mourants, supports optiques rayés, flash corrompue) en copiant d’abord les bons secteurs et en ne réessayant les zones endommagées qu’ensuite, minimisant le stress supplémentaire sur un périphérique mourant. Il est utilisé dans les acquisitions forensiques et la récupération de données quand un disque source n’est pas fiable, en s’appuyant sur un “mapfile” qui journalise la progression afin qu’une récupération interrompue puisse reprendre exactement là où elle s’était arrêtée.

Utilisation courante

# Première passe : copier tout ce qui est lisible, sauter les erreurs rapidement
ddrescue -n /dev/sdb evidence.img rescue.mapfile

# Seconde passe : ne réessayer que les zones défectueuses, plus agressivement
ddrescue -d -r3 /dev/sdb evidence.img rescue.mapfile

# Exécution complète avec I/O direct et journalisation verbeuse
ddrescue -d -v /dev/sdb evidence.img rescue.mapfile

# Reprendre une récupération interrompue (le mapfile rend cela sûr)
ddrescue /dev/sdb evidence.img rescue.mapfile

# Imager vers un autre disque de taille égale/supérieure au lieu d'un fichier
ddrescue -d /dev/sdb /dev/sdc rescue.mapfile

Conseils

  • Conservez toujours le mapfile : c’est ce qui rend ddrescue reprenable et vous permet de séparer la “première passe rapide” de la “passe de réessai lente”
  • -n (no-scrape) saute les réessais lents à la première passe pour récupérer toutes les données faciles avant que le disque ne se dégrade potentiellement davantage
  • -d utilise l’accès disque direct, en contournant le cache du kernel : généralement plus fiable sur du matériel défaillant
  • Pour le travail forensique, hachez l’image résultante ensuite (sha256sum), car ddrescue ne calcule pas d’empreintes lui-même
Aide / Page de manuel
Usage: ddrescue [options] infile outfile [mapfile]

  -b, --sector-size=<bytes>    sector size of input device [512]
  -d, --idirect                use direct disc access for input file
  -f, --force                  overwrite output device or partition
  -n, --no-scrape              skip the scraping phase
  -r, --retry-passes=<n>       exit after given number of retry passes (-1=infinite)
  -R, --reverse                reverse direction of copying operations
  -s, --size=<bytes>           maximum size of input data to be copied
  -v, --verbose                verbose operation
      --min-read-rate=<bytes>  minimum read rate of good areas in bytes/s

  mapfile records rescue status; required to resume a rescue.