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-duses 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-dutilise 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.