Ddrescue

Kommandozeilenprogramm zur Datenwiederherstellung
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. Januar 2014 um 20:01 Uhr durch Parzi (Diskussion | Beiträge) (Einleitung: Erste Erläuterung der wörtlichen Bedeutung des Programmnamens.). Sie kann sich erheblich von der aktuellen Version unterscheiden.

GNU ddrescue (Paketname: gddrescue von engl. to rescue mit der Bedeutung retten, bergen, wiedererlangen, zurückgewinnen)[1] 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. Es versucht ganz besonders auch bei auftretenden Lesefehlern, die Daten so weit wie irgend möglich wiederzugeben.

GNU Ddrescue (gddrescue)

Bildschirmausgabe von ddrescue.
Basisdaten

Maintainer Antonio Diaz
Entwickler GNU-Projekt
Erscheinungsjahr 12. August 2004
Aktuelle Version 1.17
(15. Juli 2013)
Betriebssystem Unixoide Systeme
Programmier­sprache C++
Kategorie Datenwiederherstellung
Lizenz GPL (Freie Software)
deutschsprachig nein
www.gnu.org/software/ddrescue/ddrescue.html

Abgrenzung zu anderen Programmen

Das Programm ist weder eine Abspaltung von dd noch hat es sonst etwas mit dd zu tun, außer dass beide Programme Daten von einem Gerät auf ein anderes kopieren können. Ein Unterschied besteht darin, dass ddrescue einen ausgeklügelten Algorithmus benutzt, um Daten von aussetzenden Laufwerken auf eine Weise zu kopieren, dass so wenig weiterer Schaden verursacht wird wie möglich.[2]

GNU ddrescue ist nicht identisch mit dem älteren Hilfsprogramm dd_rescue von Kurt Garloff.[1] Zwar gibt es ein Shell Script 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.[3] Eine gewisse Ineffizienz, nämlich Langsamkeit, ergibt sich schon daraus, dass ein Teil der Arbeit von einem Skript übernommen wird, wohingegen GNU ddrescue ein komplett kompiliertes Programm ist, das ohne ein steuerndes Skript auskommt.

Aufgabe des Programms

Laut seinem Programmautor kann ddrescue vor allem für zwei Aufgaben verwendet werden:[3]

  1. die Wiederherstellung der Daten einer defekten Festplatte auf einer anderen Festplatte
  2. 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.
 
Eine Log-Datei von Ddrescue.

GNU ddrescue hat den differiertesten Algorithmus zur Änderung von Blockgrößen, den es in einer Open-Source-Software gibt.[4][5] Es gilt als bedeutendes Datenwiederherstellungswerkzeug, [6][7] und wird professionell eingesetzt.[8]

Wenn man die Logfile-Technik von ddrescue benutzt, werden die Daten besonders effizient restauriert, weil nur die benötigten Blöcke gelesen werden. Darüber hinaus kann man dadurch die Datenwiederherstellung jederzeit unterbrechen und später an derselben Stelle fortsetzen.

Spezielle Einsatzmöglichkeiten

Automatische Kombination von gesicherten Daten: Gibt es mehrere beschädigte Kopien einer Datei, einer CD-ROM oder eines anderen blockorientierten Speichers, so kann man ddrescue nacheinander jede der Kopien in dieselbe Ausgabedatei kopieren lassen und wird dadurch eventuell eine vollständige und fehlerfreie Datei erhalten. Wird die Protokolldatei (engl. logfile) benutzt, so werden beim zweiten und jedem folgenden Kopiervorgang nur die Blöcke gelesen, die noch benötigt werden.

Ddrescue empfiehlt, Sicherungen mit lzip zu komprimieren, weil das Lzip-Format für die Langzeitarchivierung von Daten ausgelegt ist 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.

Ddrescue kann ausgewählte Teile der Ausgabedatei überschreiben (fill mode). Damit können zum Beispiel Daten gelöscht oder fehlerhafte Sektoren gekennzeichnet werden und gelegentlich beschädigte Sektoren repariert werden.[9]

Anwendungsbeispiel

Eine Festplatte wiederherstellen

Mit ddrescue eine Festplatte mit zwei Ext2-Partitionen von /dev/sda auf /dev/sdb wiederherstellen.[10]

Hardwarekonstellation

Das Beispiel setzt – auch wenn andere Konstellationen möglich sind – voraus, dass vier Datenträger an den Rechner angeschlossen sind:

  •   die wiederherzustellende bzw. zu kopierende Festplatte (/dev/sda),
  •   eine leere zweite Festplatte (/dev/sdb), die mindestens so groß ist wie die erste, die kopiert werden soll,
  •   ein CD-ROM-Laufwerk für eine Linux-Live-CD und
  •   ein USB-Stick für die Logdatei von ddrescue (/dev/sdc1).

Die Verwendung eines gesonderten USB-Sticks für die Logdatei sorgt dafür, dass die Datei selbst bei einem Systemabsturz erhalten bleibt. Speichert man sie hingegen nur im Dateisystem der Live-CD, dann geht sie bei einem eventuellen Systemneustart verloren, wodurch ddrescue seine Arbeit nicht an der Stelle fortsetzen könnte, an der es unterbrochen wurde. Da ein Wiederherstellungslauf von ddrescue etliche Stunden dauern kann, ist dies ein nicht zu vernachlässigendes Risiko.

 
Ddrescue beim Programmlauf

Die Befehlsfolge

Der Computer wird über einen Linux-Live-CD wie Parsix, Kanotix gestartet, dann gibt man an der Kommandozeile nacheinander folgende Befehle ein:

  ddrescue -f -n /dev/sda /dev/sdb /media/myusb/rescue.log
  ddrescue -d -f -r3 /dev/sda /dev/sdb logfile
  fdisk /dev/sdb 
  e2fsck -v -f -p /dev/sdb1
  e2fsck -v -f -p /dev/sdb2

Die Befehle im Einzelnen

Schritt Befehl Funktion
1 ddrescue -f -n /dev/sda /dev/sdb /media/myusb/rescue.log Der erste Durchlauf von ddrescue, bei dem nur jene Daten kopiert werden, die ddrescue problemlos lesen kann.
-n (engl. „no-split“), fehlerhafte Bereiche nicht teilen oder mehrfach zu lesen versuchen.
2 ddrescue -d -f -r3 /dev/sda /dev/sdb /media/myusb/rescue.log Zweiter Durchlauf von ddrescue, bei dem es jeden nicht problemlos zu lesenden Sektor bis zu dreimal (Parameter „-r3“) zu lesen versucht. Die Ausgabe des ersten Durchlaufs wird durch diesen zweiten Durchlauf ergänzt, das heißt ddrescue versucht bei diesem zweiten Durchlauf die Lücken in der Ausgabe seines ersten Durchlaufs zu füllen.
3 fdisk /dev/sdb Falls die Partitionstabelle beschädigt ist, muss man in diesem Schritt versuchen, mit fdisk die Partitionstabelle zu restaurieren.
4 e2fsck -v -f -p /dev/sdb1 Ermittelt und verbessert eventuelle Fehler im Dateisystem der von ddrescue geschriebenen Partition sdb1.
-f (engl. „force“), unter allen Umständen erzwungene Überprüfung des Dateisystems.
-p (engl. „preen“) automatische Korrektur aller Probleme, die keines menschlichen Eingreifens bedürfen.
5 e2fsck -v -f -p /dev/sdb2 Ermittelt und verbessert eventuelle Fehler im Dateisystem der von ddrescue geschriebenen Partition sdb2.

Verbreitung

Ddrescue ist vorinstallierter Bestandteil verschiedener GNU/Linux-Distributionen und liegt ebenso für FreeBSD vor.[11]

Live-Systeme, die standardmäßig Ddrescue mitbringen:

Siehe auch

Einzelnachweise

  1. a b gddrescue. In: „Ubuntuusers.de“. 28. Dezember 2013, abgerufen am 28. Dezember 2013: „Achtung, Verwechslungsgefahr: Neben dem Paket gddrescue, welches das Programm ddrescue enthält, gibt es noch das Paket ddrescue mit dem Programm dd_rescue.“
  2. GNU ddrescue Manual. The GNU project, abgerufen am 6. September 2013.
  3. a b Interview With GNU DDRescue's Antonio Diaz Diaz. In: „Blue-GNU – News for Gnus“. 15. August 2007, archiviert vom Original; abgerufen am 28. Dezember 2013 (englisch).
  4. Disk drive recovery: ddrescue, dd_rescue, dd_rhelp. John Gilmore, abgerufen am 6. September 2013.
  5. Damaged Hard Disk. www.cgsecurity.org, abgerufen am 6. September 2013.
  6. Best Data Recovery Tools - Top 10 List. Geekyprojects, abgerufen am 6. September 2013.
  7. 12 essential system recovery tools. PC Plus Issue 303 22nd Jan 2011, abgerufen am 6. September 2013.
  8. gnu ddrescue to the rescue! Jelsoft Enterprises Ltd., abgerufen am 6. September 2013.
  9. Ddrescue - Data recovery tool. The GNU project, abgerufen am 6. September 2013.
  10. GNU ddrescue Manual: “7 A small tutorial with examples”
  11. J. Harris: ddrescue 1.17. Port Details. In: „FreshPorts.org – New ports and applications [for FreeBSD]“. 16. August 2007, abgerufen am 12. Januar 2014.
  12. Package lists for grml32-small 2013.09[-rc1]. In: „Grml.org“. 17. Oktober 2013, abgerufen am 13. Januar 2014.
  13. Komplette Software-Liste (CD, ca. 1000 Programme). In: „Knopper.net“. 26. Juni 2013, abgerufen am 13. Januar 2014.
  14. Programs Included in Parted Magic 2014_01_04 – Parted Magic LLC. In: „PartedMagic.com“. 10. Januar 2014, abgerufen am 13. Januar 2014.
  15. Detailed-packages-list [SystemRescueCd-3.8.1]. In: „Sysresccd.org“. 28. Oktober 2013, abgerufen am 13. Januar 2014.