Mastering Data Recovery with ddrescue (with examples)
- Linux
- December 17, 2024
ddrescue
is a robust data recovery tool designed to read data from damaged block devices. It helps in salvaging as much data as possible from disks with physical damage or logical errors, ensuring minimal data loss. ddrescue
achieves this by copying data from a source and recording any bad sectors encountered during the process.
Use case 1: Create an Image of a Device
Code:
sudo ddrescue /dev/sdb path/to/image.dd path/to/log.txt
Motivation:
Creating an image of a device is crucial when dealing with a failing hard drive or other storage medium. By creating a byte-for-byte copy, you preserve the device’s current state, allowing you to attempt various recovery methods on this image rather than the fragile original. This is beneficial because it minimizes further wear on the original device and maintains a backup you can fall back on.
Explanation:
sudo
: This command is run with superuser privileges due to the requirement to access disk devices directly.ddrescue
: This calls theddrescue
program, essential for data recovery tasks./dev/sdb
: This is the source from which data is read. It’s a syntax commonly used in Linux to denote the second SCSI disk connected to the machine.path/to/image.dd
: This argument specifies the output file path where the image of the storage device will be created. The.dd
extension denotes the disk dump, but you can name this file as you see fit.path/to/log.txt
: This is the log file that keeps track of the process, detailing which sectors have been read successfully and which have been found bad. This log is instrumental for any recovery attempts that may follow, as it allows for the process to be paused and resumed without starting over.
Example output:
GNU ddrescue 1.23
Press Ctrl-C to interrupt
rescued: 50000 MB, errsize: 1024 KB, current rate: 10000 B/s
ipos: 50000 MB, errors: 100, average rate: 50000 B/s
opos: 50000 MB, time from last successful read: 0s
Finished
Use case 2: Clone Disk A to Disk B
Code:
sudo ddrescue --force --no-scrape /dev/sdX /dev/sdY path/to/log.txt
Motivation:
Cloning a disk directly onto another is particularly useful when migrating data between disks or when upgrading an old disk to a new one. It ensures that you have an exact replica of the original disk, inclusive of files, partitions, and system data. This method of cloning can also be advantageous if Disk A is slightly damaged, as ddrescue
is capable of bypassing bad sectors that other cloning tools might not handle as gracefully.
Explanation:
sudo
: Elevates the command’s privileges, necessary for operating with disk devices.ddrescue
: Again, the main data recovery software used for cloning in this scenario.--force
: This option forcibly overwrites the destination if needed. It is crucial when you are certain that data on Disk B should be completely erased to clone Disk A onto it.--no-scrape
: This preventsddrescue
from performing an exhaustive read attempt on bad sectors during the initial copy. This is helpful in speeding up the cloning process when full recovery of all data isn’t critical, or when the priority is simply to copy as much as possible first and foremost./dev/sdX
: The source disk which is being cloned./dev/sdY
: The destination disk where the clone will be written. It needs to be at least as large as the source to avoid data loss.path/to/log.txt
: A log file to track what has been cloned and denote problem areas on the source disk, which helps if you need to return to specific sectors later for extra recovery attempts.
Example output:
GNU ddrescue 1.23
Press Ctrl-C to interrupt
rescued: 48000 MB, errsize: 2048 KB, current rate: 50000 B/s
ipos: 48000 MB, errors: 150, average rate: 48000 B/s
opos: 48000 MB, time from last successful read: 2s
Finished
Conclusion:
In the realm of data recovery and disk management, ddrescue
is an indispensable tool. Whether you’re dealing with a failing storage device or looking to clone a disk, the examples provided illustrate the capabilities of ddrescue
in real-world scenarios. By understanding each option and parameter, users can tailor the recovery and cloning process to meet their specific needs while safeguarding as much data as possible in a structured manner.