ddrescue
GNU ddrescue (von engl. to rescue)[2] 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. Auch bei Lesefehlern versucht es, die Daten so weit wie irgend 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 problemlos zu lesender Daten erreicht, ehe der Datenträger durch zeitraubende wiederholte Leseversuche an defekten Stellen möglicherweise überlastet wird.
GNU ddrescue (gddrescue)
| |
---|---|
Bildschirmausgabe von ddrescue | |
Basisdaten
| |
Maintainer | Antonio Diaz Diaz |
Entwickler | Antonio Diaz Diaz / GNU-Projekt |
Erscheinungsjahr | 12. August 2004 |
Aktuelle Version | 1.28[1] (23. Januar 2024) |
Betriebssystem | Unixoide Systeme |
Programmiersprache | C++ |
Kategorie | Datenwiederherstellung |
Lizenz | GPL (Freie Software) |
deutschsprachig | nein |
www.gnu.org/software/ddrescue/ddrescue.html |
Geschichte und Entwicklungsanlass
BearbeitenAntonio 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 war und 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 wird.[3]
Abgrenzung zu anderen Programmen
Bearbeitenddrescue unterscheidet sich von dd durch einen ausgeklügelten Algorithmus, der Daten von aussetzenden Laufwerken auf eine Weise kopiert, bei der so wenig weiterer Schaden verursacht wird wie möglich.[4]
GNU ddrescue ist nicht identisch mit dem älteren Hilfsprogramm dd_rescue
von Kurt Garloff.[2]
Programm | Paket | Entwickler | Anmerkung | |
---|---|---|---|---|
Debian u. ä. | Fedora, CentOS u. ä. | |||
ddrescue | gddrescue | ddrescue | Antonio Diaz Diaz | Wird in diesem Text beschrieben. |
dd_rescue | – | dd_rescue | Kurt Garloff |
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]
Aufgabe des Programms
BearbeitenLaut seinem Programmautor kann ddrescue vor allem für zwei Aufgaben verwendet werden:[3]
- 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.[5][6] Es gilt als bedeutendes Datenwiederherstellungswerkzeug[7][8] und wird professionell eingesetzt.[9]
Wenn man die Mapfile-Option von ddrescue benutzt, werden die Daten besonders effizient kopiert, 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
BearbeitenAutomatische Kombination von gesicherten Daten: Hat man bereits mehrere beschädigte Abbilder einer Datei, einer CD-ROM oder eines anderen blockorientierten Speichers vorliegen, so kann ddrescue diese verwenden, um ein Abbild mit minimalen Fehlerblöcken zu kompilieren; im Idealfall gar ein fehlerfreies. 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 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 in manchen Fällen beschädigte Sektoren wieder nutzbar gemacht werden.[10]
Anwendungsbeispiele
BearbeitenDie einfachste und in der Regel beste Möglichkeit, ddrescue zu verwenden, ist ddrescue quelle ziel mapfile ohne spezielle Parameter. Dies ist anstelle der Verwendung von dd bereits dann sinnvoll, wenn man auch nur den leisen Verdacht hat, das Gerät, von dem man das Image ziehen will, könnte Lesefehler produzieren. Beispiel: angenommen eine zu sichernde alte Diskette befinde sich im Laufwerk /dev/sdg, so startet man
ddrescue /dev/sdg myfloppy.img myfloppyddrescue_map
wobei sicherzustellen ist, dass das Laufwerk nicht oder nur zum Lesen gemountet ist. Nach dem Start zeigt ddrescue laufend an, welche Bereiche es gerade liest oder zu lesen versucht. Ist der Lesevorgang sofort oder nach einigen Versuchen fehlerfrei, so erhält man damit schnellstmöglich ein fehlerfreies Abbild. myfloppyddrescue_map enthält eine einfache, lesbare Liste mit Bereichen mit und ohne Fehler. Im Idealfall ist das nur ein Bereich von der Gesamtgröße der Diskettenkapazität, der als fehlerfrei markiert ist.
Die so erzeugte Datei kann unter unixoiden Betriebssystemen als Loop device gemountet werden.
mount -o loop,ro myfloppy.img /mnt
Eine Festplatte wiederherstellen
BearbeitenBeispiel: Mit ddrescue eine Festplatte mit zwei Ext2-Partitionen von /dev/sda auf /dev/sdb wiederherstellen. Wir verwenden die nicht existierenden Gerätedateien sdXa und sdXb in allen untenstehenden Befehlen als Platzhalter für die tatsächlichen Gerätedateien (z. B. sda, sdb), um versehentlichen Datenverlust zu verhindern, wenn man beim Kopieren und Einfügen übersieht, einzelne Platzhalter zu ersetzen.[11]
Hardwarekonstellation
Das Beispiel setzt – auch wenn andere Konstellationen möglich sind – voraus, dass vier Datenträger an den Rechner angeschlossen sind:
- die wiederherzustellende oder zu kopierende Festplatte (
/dev/sdXa
), - eine leere zweite Festplatte (
/dev/sdXb
), 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 Mapdatei von ddrescue (
/dev/sdc1
).
Die Verwendung eines gesonderten USB-Sticks für die Mapdatei sorgt dafür, dass die Datei selbst bei einem Systemabsturz erhalten bleibt. Speichert man sie hingegen nur im (lediglich im Arbeitsspeicher vorhandenen) 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.
Die Befehlsfolge
Der Computer wird über eine Linux-Live-CD wie Parsix, Kanotix gestartet, dann gibt man an der Kommandozeile nacheinander folgende Befehle ein:
ddrescue -f -n /dev/sdXa /dev/sdXb /media/myusb/rescue.map ddrescue -d -f -r3 /dev/sdXa /dev/sdXb /media/myusb/rescue.map fdisk /dev/sdXb e2fsck -v -f -p /dev/sdXb1 e2fsck -v -f -p /dev/sdXb2
Die Befehle im Einzelnen
Schritt | Befehl | Funktion | ||||
---|---|---|---|---|---|---|
1 | ddrescue -f -n /dev/sdXa /dev/sdXb /media/myusb/rescue.map
|
Der erste Durchlauf von ddrescue, bei dem nur jene Daten kopiert werden, die ddrescue problemlos lesen kann.
| ||||
2 | ddrescue -d -f -r3 /dev/sdXa /dev/sdXb /media/myusb/rescue.map
|
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/sdXb
|
Falls die Partitionstabelle beschädigt ist, muss man in diesem Schritt versuchen, mit fdisk die Partitionstabelle zu restaurieren. | ||||
4 | e2fsck -v -f -p /dev/sdXb1
|
Ermittelt und repariert eventuelle Fehler im Dateisystem der von ddrescue geschriebenen Partition sdb1.
| ||||
5 | e2fsck -v -f -p /dev/sdXb2
|
Ermittelt und repariert eventuelle Fehler im Dateisystem der von ddrescue geschriebenen Partition sdb2. |
Verbreitung
Bearbeitenddrescue ist vorinstallierter Bestandteil verschiedener GNU/Linux-Distributionen und liegt ebenso für FreeBSD vor.[12]
Einige Live-Systeme, die standardmäßig ddrescue mitbringen:
- grml[13]
- Knoppix[14]
- Parted Magic[15]
- SystemRescueCd[16]
- Ubuntu Rescue Remix[17]
Siehe auch
BearbeitenWeblinks
Bearbeiten- GNU ddrescue. (englisch)
- „GNU ddrescue Manual“ auf gnu.org / auf manpagez.com (englisch)
- ddrescue auf debian.org. (Mit deutschen Seiten)
Einzelnachweise
Bearbeiten- ↑ Antonio Diaz Diaz: GNU ddrescue 1.28 released. 25. Januar 2024 (englisch, abgerufen am 25. Januar 2024).
- ↑ 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.“
- ↑ a b c Interview With GNU DDRescue's Antonio Diaz Diaz. In: „Blue-GNU – News for Gnus“. 15. August 2007, archiviert vom (nicht mehr online verfügbar) am 15. April 2008; abgerufen am 28. Dezember 2013 (englisch).
- ↑ GNU ddrescue Manual. The GNU project, abgerufen am 6. September 2013.
- ↑ Disk drive recovery: ddrescue, dd_rescue, dd_rhelp. John Gilmore, archiviert vom (nicht mehr online verfügbar) am 30. Mai 2013; abgerufen am 6. September 2013. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Damaged Hard Disk. www.cgsecurity.org, abgerufen am 6. September 2013.
- ↑ Best Data Recovery Tools – Top 10 List. Geekyprojects, abgerufen am 6. September 2013.
- ↑ 12 essential system recovery tools. PC Plus Issue 303 22nd Jan 2011, abgerufen am 6. September 2013.
- ↑ gnu ddrescue to the rescue! Jelsoft Enterprises Ltd., archiviert vom am 27. Oktober 2013; abgerufen am 15. März 2024.
- ↑ Ddrescue – Data recovery tool. The GNU project, abgerufen am 6. September 2013.
- ↑ GNU ddrescue Manual: “7 A small tutorial with examples”
- ↑ J. Harris: ddrescue 1.17. Port Details. In: „FreshPorts.org – New ports and applications [for FreeBSD]“. 16. August 2007, abgerufen am 12. Januar 2014.
- ↑ Package lists for grml32-small 2013.09[-rc1]. In: „Grml.org“. 17. Oktober 2013, abgerufen am 13. Januar 2014.
- ↑ Komplette Software-Liste (CD, ca. 1000 Programme). In: „Knopper.net“. 26. Juni 2013, abgerufen am 13. Januar 2014.
- ↑ Programs Included in Parted Magic 2014_01_04 – Parted Magic LLC. In: „PartedMagic.com“. 10. Januar 2014, archiviert vom (nicht mehr online verfügbar) am 13. Januar 2014; abgerufen am 13. Januar 2014. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Detailed-packages-list [SystemRescueCd-3.8.1]. In: „Sysresccd.org“. 28. Oktober 2013, abgerufen am 13. Januar 2014.
- ↑ Version 12.04. In: „Ubuntu-rescue-remix.org“. 26. April 2012, archiviert vom am 28. Januar 2014; abgerufen am 18. Januar 2014: „Ubuntu-Rescue-Remix features a full command-line environment with the newest versions of the most powerful free/libre open-source data recovery software including GNU ddrescue, Photorec, The Sleuth Kit, Gnu-fdisk and Clamav.“