c't 2023/21, Seite 62 ff
Wenn ein Datenträger „nur“ logisch Schaden genommen hat, also versehentlich Daten gelöscht wurden oder die Ordnung der Partitionen durcheinandergebracht wurde, genügt zum Erstellen einer Kopie für weitere Rettungsversuche ein Programm, das die Daten blockweise 1:1 dupliziert. Bei Lesefehlern, die durch defekte Blöcke verursacht werden, kommen die meisten Programme aber aus dem Takt. Sie müssen es zumindest schaffen, in der erzeugten Kopie leere Blöcke für die defekten Bereiche einzufügen.
Perfekt verhält sich da die GNU-Version von ddrescue: Das Programm liest hartnäckig auch Laufwerke mit Defekten aus. Es wendet dazu die folgende Strategie an, um möglichst viel zu sichern: Zunächst kopiert es kontinuierlich in großen Happen das Original. Stößt es auf nicht lesbare Bereiche, springt es ein Stück weiter und versucht, weiter kontinuierlich zu lesen. Den nicht lesbaren Bereich merkt es sich, um ihn in weiteren Durchläufen kleinteiliger zu kopieren. Mit dieser Strategie tastet sich ddrescue immer näher an die Blöcke heran, die tatsächlich nicht mehr lesbar sind.
Beispiel: Ein x86-PC mit einem internen Laufwerk (eine SATA-SSD mit Windows darauf) soll helfen, Daten einer Magnetfestplatte auf eine SSD zu übertragen. Die beiden letztgenannten werden per USB-Adapter an den PC angeschlossen, aber erst dann, wenn das Rettungsbetriebssystem vom USB-Stick gebootet ist. Unser Vorschlag dafür: die Linux-Distribution grml oder unser Desinfec’t, denn das ist komfortabler, weil es eine grafische Bedienoberfläche hat (Downloads siehe ct.de/ypyx). Öffnen Sie eine Kommandozeile als root-Nutzer, sofern die Distribution das nicht von sich aus tut.
ddrescue -O /dev/sdc /mnt/disk.img /mnt/disk.log
c't 2023/22, Seite 8
Einige kleine Empfehlungen für weitere ddrescue Optionen, die meiner Ansicht nach verwendet werden sollten:
--ask
: Zeigt ID-String, Seriennummer und Größe von Quelle und Ziel an und fragt nochmal nach. Sehr sinnvoll, um versehentliches Kopieren in die falsche Richtung zu vermeiden!
-d
(--idirect
): Umgeht den Lesepuffer des Betriebssystems (O_DIRECT-Option beim open()). Bei Lesefehlern hat der keinen Sinn und kann die Laufzeit erhöhen.
-v
(--verbose
): Mehr Details anzeigen, Option wiederholen für noch mehr.
-b 4096
(--sector-size=4096
): Setzt kleinste Leseeinheit auf 4096 statt 512 Bytes. Gerade bei defekten Sektoren von Festplatten mit 4 KByte physischen Sektoren ist es kontraproduktiv, dann noch achtmal 512-Byte-Fragmente jedes Sektors auszuprobieren. Dauert nur viel länger und stresst die Platte noch mehr.
Bei Fehlern auf SSDs könnten sogar noch größere Werte sinnvoll sein. Für das Retten von CD/DVD passt -b 2048
. In dem Fall lässt sich mit ddrescue ein „Best Of“-Image erzeugen, wenn man weitere Leseversuche mit anderen Laufwerken und derselben Map-Datei (früher: Log-Datei) durchführt. Hat bei mir mehrfach mit alten gebrannten CDs/DVDs funktioniert.
Die Cygwin-Version von ddrescue läuft zur Not ohne Cygwin-Installation. Im Unterschied zur Windows-Version von TestDisk/PhotoRec reicht die cygwin1.dll im selben Verzeichnis.
Dank an Christian Franke
GUI für ddrescrue
https://www.hamishmb.com/ddrescue-gui/
Die Bedienoberfläche fällt unter Windows wegen des Designs und des Funktionsumfangs aus dem Rahmen Das GUI deckt nur einen Bruchteil der Optionen von ddrescue ab und kann unter Windows obendrein nicht direkt auf die Festplatten zugreifen (eine Einschränkung, die das Programm Cygwin zuschreibt). Im Hintergrund scheint der Autor auch noch Programme wie smartctl zu starten, die unter Windows bei aktivem überwachtem Ordnerzugriff Alarme produzieren. Unser Fazit: Lohnt nicht, Finger weg!
c't 22/2023,, Seite 80
Stand: 2023-09-30