# Ddrescue

GNU ddrescue (von engl. to rescue) ist ein Kommandozeilenprogramm zur Datenwiederherstellung. Das Programm kopiert Daten aus einer Datei oder von einem blockorientierten Gerät (Festplatte, CD-ROM oder dergleichen) in eine andere Datei oder auf ein anderes blockorientiertes Gerät. Bei Lesefehlern versucht es, die Daten so weit wie möglich wiederzugeben. Dabei werden Bereiche mit Lesefehlern zunächst großzügig übersprungen und zurückgestellt, um sich erst später möglichst nah an nicht mehr zu lesende Bereiche heranzutasten. Im Angesicht der (bei möglicherweise drohendem Komplettausfall begrenzten) Restlebensdauer des Datenträgers wird dadurch eine sichere Rettung möglichst vieler noch lesbarer Daten erreicht.

## Geschichte und Entwicklungsanlass

Antonio Diaz Diaz begann mit der Entwicklung von ddrescue im Sommer 2004, um Daten aus einer fehlerhaften CD-ROM zu retten, nachdem er kein Programm fand, das seinen Ansprüchen für diese Aufgabe genügte.
Diaz ist der alleinige Entwickler und Programmierer von ddrescue und bezeichnet es als ein zwar etwas komplexes, aber kleines Projekt, für das daher nicht mehr als ein Entwickler benötigt werde.

## Abgrenzung zu anderen Programmen

GNU ddrescue unterscheidet sich von dd durch einen Algorithmus, durch den einerseits möglichst viele Daten von einem aussetzenden Laufwerke kopiert, andererseits aber auch so wenig weiterer Schaden wie möglich verursacht werden soll.
GNU ddrescue ist von dem älteren Hilfsprogramm dd_rescue von Kurt Garloff zu differenzieren. Zwar existiert ein Shellskript namens dd_rhelp, das Garloffs dd_rescue mehrfach aufruft, um etwas Ähnliches zu leisten wie GNU ddrescue, jedoch soll die Zusammenarbeit von dd_rescue und dd_rhelp laut Antonio Diáz Diáz und anderen vergleichsweise ineffizient sein.
In einigen Distributionen (insbesondere Debian und abgeleitete Distributionen) wird ddrescue zur besseren Abgrenzung auch als gddrescue bezeichnet.

## Aufgabe des Programms

Laut seinem Programmautor kann ddrescue vor allem für zwei Aufgaben verwendet werden:
* die Wiederherstellung der Daten einer defekten Festplatte auf einer anderen Festplatte
* das Löschen aller guten Sektoren einer Festplatte unter Beibehaltung der fehlerhaften, um die Festplatte zur Reklamation an den Hersteller schicken zu können, ohne unnötig eigene Daten preiszugeben.
GNU ddrescue hat den differenziertesten Algorithmus zur Änderung von Blockgrößen, den es in einer Open-Source-Software gibt. Es gilt als bedeutendes Datenwiederherstellungswerkzeug und wird professionell eingesetzt.
Unter Zuhilfenahme der Mapfile-Option von ddrescue können Daten besonders effizient kopiert werden, da dadurch bei wiederholter Datenrettung nur die noch benötigten Blöcke gelesen werden. Darüber hinaus kann dadurch die Datenwiederherstellung jederzeit unterbrochen und später an derselben Stelle fortgesetzt werden.

## Spezielle Einsatzmöglichkeiten

ddrescue ermöglicht die automatische Kombination von gesicherten Daten: Liegen bereits mehrere beschädigte Abbilder einer Datei, einer CD-ROM oder eines anderen blockorientierten Speichers vor, kann ddrescue diese verwenden, um ein Abbild mit minimalen Fehlerblöcken zu kompilieren. Ansonsten wird ddrescue unter Verwendung der als Parameter anzugebenden Protokolldatei (engl. mapfile) beim zweiten und jedem folgenden Kopiervorgang nur die Blöcke lesen, die noch benötigt werden.
Der Autor von ddrescue empfiehlt, Sicherungen mit lzip zu komprimieren, weil das Lzip-Format für die Langzeitarchivierung von Daten ausgelegt sei und Datenwiederherstellungsfunktionen bietet, die gut die Fähigkeiten von ddrescue ergänzen. Wenn der Datenverlust in einer Datei auf einem beschädigten Datenträger beruht, ist eine Zusammenarbeit von ddrescue und Lziprecover die beste Möglichkeit zur Wiederherstellung von Daten aus mehreren beschädigten Kopien.
GNU ddrescue kann ausgewählte Teile der Ausgabedatei überschreiben (fill mode). Damit können zum Beispiel Daten gelöscht oder fehlerhafte Sektoren gekennzeichnet werden und in manchen Fällen beschädigte Sektoren wieder nutzbar gemacht werden.

## Verbreitung

GNU ddrescue ist vorinstallierter Bestandteil mehrerer auf Datenrettung optimierter GNU/Linux-Distributionen und liegt ebenso für FreeBSD vor.
Einige Live-Systeme, die standardmäßig ddrescue ausliefern:
* grml
* Knoppix
* Parted Magic
* SystemRescueCd
* Ubuntu Rescue Remix