AA-123RF-25267550-Wolfgang_Zwanzger-123RF.jpg

© Wolfgang Zwanzger, 123RF

Datenrettung mit Ddrescue und Ddrescue-GUI

Blaulichteinsatz

,
Mit Ddrescue retten Sie Daten von beschädigten Festplatten, DVDs, USB-Sticks oder Speicherkarten. Ein leistungsfähiges grafisches Frontend, das sämtliche Funktionen einfach zugänglich macht, begleitet das leistungsfähige Kommandozeilenwerkzeug.

Egal, ob Festplatte, SSD oder Flashspeicher – auf Massenspeichern enthaltenen Dateisystemen drohen durch Fehlbedienung oder äußere Einflüsse fortwährend Gefahren. Im Fall der Fälle unterstützt Sie gegebenenfalls ein Backup bei der Datenrettung, sofern es denn eines gibt: Aufgrund von Bequemlichkeit oder Gelegenheit fehlt eine solche Datensicherung jedoch allzu oft. Im Notfall müssen Sie daher die Daten direkt vom beschädigten Datenträger retten. Dabei hilft Ihnen das freie Erste-Hilfe-Tool Ddrescue. Zusammen mit dem passenden grafischen Werkzeug Ddrescue-GUI haben Sie ein mächtiges Werk zur Hand.

Allgemeines Vorgehen

Klassische Festplatten machen bei Lese- und Schreibfehlern oft Geräusche, SSDs und Flashspeicher bleiben dagegen still und behalten das Malheur zunächst für sich. Zeigt das System ein unerklärliches Verhalten, das auf Probleme beim Schreiben oder Lesen hinweist, öffnen Sie zur Kontrolle ein Terminalfenster und verschaffen sich mittels dmesg | grep sd nähere Informationen. Erscheinen hier Meldungen wie in Listing 1, sollten Sie so schnell wie möglich handeln. Zeigt ein Datenträger erst einmal beginnende Ausfallerscheinungen, droht schnell der Verlust sämtlicher Daten.

Um weitere Schäden abzuwenden, sollten Sie die betroffene Festplatte umgehend aushängen oder – im Fall von bereits erfolgten Datenverlusten auf der Systempartition – den Rechner herunterfahren und von einem Live-Linux neu starten. In jedem Fall müssen Sie in der Lage sein, Shell-Kommandos auf dem betroffenen Rechner auszuführen, ohne dass der beschädigte Datenträger eingebunden ist. Von daher empfiehlt es sich, stets einen USB-Stick mit einem bootfähigen Linux-System im Haus zu haben.

Listing 1

$ dmesg | grep sd
[...]
[sda] Add. Sense: Unrecovered read error - auto reallocate failed
[...]
end_request: I/O error, dev sda, sector 12345
[...]
Buffer I/O error on device sda1, logical block 764321

Überlegen Sie nun, ob Sie einen kompletten Massenspeicher (etwa /dev/sda) oder nur eine Partition darauf (zum Beispiel /dev/sda1) retten möchten. Nutzen Sie zum Beispiel eine getrennte Home-Partition, dann sollten Sie die Rettungsversuche erst auf diese konzentrieren. Eine Übersicht über die am System angeschlossenen Datenträger erhalten Sie mittels des Tools Lsblk; aus den Partitionsgrößen lässt sich in der Regel schnell die entsprechende Geräte-ID ableiten (Listing 2). Alternativ hilft ein Blick auf die Ausgaben von sudo fdisk -l beziehungsweise sudo gdisk -l.

Listing 2

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  59,6G  0 disk
|?sda1   8:1    0  53,7G  0 part /
|?sda2   8:2    0   5,9G  0 part [SWAP]
sdb      8:16   0 596,2G  0 disk
|?sdb1   8:17   0 596,2G  0 part
sr0     11:0    1  1024M  0 rom

Zudem benötigen Sie die Blockgröße des zu rettenden Dateisystems, denn diese müssen Sie beim Aufruf von Ddrescue mit angeben. Den entsprechenden Wert ermitteln Sie mithilfe des Aufrufs stat Mountpoint -f | grep Block. Als Option geben Sie dem Kommando den Einhängepunkt der gewünschten Partition mit und filtern mithilfe von Grep die Zeile mit der Blockgröße heraus. Listing 3 zeigt typische Blockgrößen für eine DVD, einen USB-Stick oder eine Festplattenpartition.

Listing 3

$ stat /media/cdrom0 -f | grep Block
Blockgröße: 2048       Fundamentale Blockgröße: 2048
$ stat /media/usb-stick -f | grep Block
Blockgröße: 8192       Fundamentale Blockgröße: 8192
$ stat /home -f | grep Block
Blockgröße: 4096       Fundamentale Blockgröße: 4096

Mit diesen Informationen installieren Sie auf dem Rettungssystem Ddrescue (siehe Kasten "Verwechslungsgefahr") und machen sich mit den Optionen des Kommandos vertraut. Die Notsicherung leiten Sie mittels des Kommandos ddrescue ein – auf die Optionen gehen wir etwas später ein. Der Zieldatenträger muss nun ausreichend Platz für die zu rettenden Daten bieten. Sichern Sie über das Netzwerk, müssen Sie darauf achten, dass der Zielrechner durchgehend zur Verfügung steht, also keine WAN-Trennung durch den Provider erfolgt oder Wartungsfenster mit Unterbrechung von im Netz angebotenen Diensten auftreten.

Verwechslungsgefahr

Das im Artikel genutzte Programm Ddrescue installieren Sie unter Debian und unter dessen Derivaten wie Ubuntu über das Paket gddrescue. In den Paketquellen finden Sie jedoch auch ein Paket mit dem eigentlich viel stimmigeren Namen ddrescue – es richtet das Kommando dd_rescue auf dem Rechner ein. Lassen Sie sich an dieser Stelle nicht verwirren: Beide Programme erweitern das klassische Dd-Kommando um Funktionen zum Retten von Daten von beschädigten Datenträgern. Im Rahmen dieses Artikels behandeln wir jedoch nur das zuerst genannte Programm Ddrescue: Es gilt als das fortgeschrittenere der beiden.

Legen Sie die Sicherung nun nach Möglichkeit als Abbilddatei ab. Diese lässt sich später per Loopback wieder sehr einfach in den Verzeichnisbaum eines Linux-Systems einhängen und auf Dateiebene auslesen, eventuelle Dateisystemfehler übergeht Ddrescue dabei. Beginnen Sie die Sicherung am besten mit der Option -n, um zunächst alle problemlos lesbaren Bereiche in Sicherheit zu bringen, bevor das Speichermedium ganz den Geist aufgibt. Die Angabe der Blockgröße könnten Sie theoretisch auslassen, eventuell führt dies allerdings zu einer geringeren Lesegeschwindigkeit. Weitere wichtige Optionen zu Ddrescue im Überblick finden Sie in der Tabelle "Ddrescue-Optionen".

Ddrescue-Optionen

Anweisung Aktion Hinweis
-v ausführliche Meldungen anzeigen
-bBlockgröße Angabe der Blockgröße Ermittlung siehe Listing 3
-f ein Geräte/eine Partition überschreiben nicht bei Ausgabe in eine Datei
-n beschädigte Blöcke übergehen
-rAnzahl Anzahl der Leseversuche bei -r-1 arbeitet Ddrescue, bis es alle Blöcke erfolgreich lesen konnte

Die fehlerbehafteten Areale auf dem Speichermedium vermerkt Ddrescue im ersten Durchgang in einer Logdatei. Im zweiten Durchgang, ohne die Option -n, nutzt Ddrescue dieses Protokoll dann, um aus den fehlerhaften Bereichen zu retten, was dort noch zu retten ist (Listing 4). Der Erfolg der Aktion hängt stark vom Zustand des Datenträgers ab. Mit gut Glück klappt jedoch eine vollständige Wiederherstellung.

Listing 4

### Durchlauf 1: Sichert Daten aus unbeschädigten Bereichen:
ddrescue -n -bBlockgröße Quelle Ziel Logdatei
### Durchlauf 2: Versucht Daten aus fehlerhaften Bereichen zu sichern:
ddrescue -bBlockgröße Quelle Ziel Logdatei

Hinweis

Planen Sie für alle Rettungsarbeiten ausreichend Zeit ein. Eine Rettungsaktion für eine 1 TByte große Festplatte nimmt gut und gerne zwei Tage oder länger in Anspruch.

Daten von USB-Stick retten

Als konkretes Beispiel sichern wir den Inhalt eines USB-Sticks – sinngemäß Gleiches gilt zum Beispiel für die beschädigte SD-Speicherkarte einer Digitalkamera. Haben Sie das Medium an den Rechner angesteckt, liefert Lsblk die Geräte-ID /dev/sdc für den gesamten USB-Stick beziehungsweise /dev/sdc1 für die einzige Partition darauf (Listing 5, Zeile 1 bis 6). Der Aufruf des Kommandos stat zeigt eine Blockgröße von 8192 an (Zeile 7 und 8). Mit diesen Informationen hängen Sie den Datenträger dann per Umount wieder aus (Zeile 9).

Listing 5

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  59,6G  0 disk
[...]
sdc      8:32   1     2G  0 disk
|?sdc1   8:33   1     2G  0 part /run/media/username/8D86-A06A
$ stat /run/media/username/8D86-A06A -f | grep Block
Blockgröße: 8192       Fundamentale Blockgröße: 8192
$ umount /run/media/clangner/8D86-A06A

Wie in Listing 6 gezeigt, rufen Sie nun den ersten Durchgang von Ddrescue auf. Den Befehl passen Sie entsprechend der zuvor ermittelten Daten für die Blockgröße und die jeweilige Geräte-ID an Ihre Situation an. Während der Laufzeit gibt das Programm Informationen zur bisher geretteten Datenmenge (rescued), zur aktuellen Lese- (ipos) und Schreibposition (opos), zur Menge an fehlerbehafteten Daten (errsize) sowie zur Anzahl der Fehler (errors) aus. Ferner erfahren Sie die aktuelle (current rate) und durchschnittliche (average rate) Lesegeschwindigkeit auf dem Medium.

Listing 6

$ sudo ddrescue -n -b8192 /dev/sdc1 usbstick.img usbstick.log
GNU ddrescue 1.20
Press Ctrl-C to interrupt
rescued:   213581 kB,   errsize:         0 B,    current rate:  10485 kB/s
   ipos:   213581 kB,    errors:         0,      average rate:  10170 kB/s
   opos:   213581 kB,  run time:         21s,  remaining time:          3m
time since last successful read:          0s
Copying non-tried blocks... Pass 1 (forwards)

Sämtliche erfolgreich ausgelesenen Daten befinden sich nach Abschluss der Aktion in der Image-Datei usbstick.img. Der Umfang dieser Datei entspricht in etwa der Größe des defekten Datenträgers. In der Logdatei usbstick.log finden Sie eine Reihe von Statusmeldungen. Neben Meta-Informationen wie Start- und Endzeit beinhaltet das Protokoll auch Informationen zu den fehlerhaften Blöcken (siehe Tabelle "Statusangaben im Ddrescue-Log").

Statusangaben im Ddrescue-Log

Statuszeichen Bedeutung
+ beendet
G Erstellen der Protokolldatei
F Füllen der angegebenen Blöcke
- Angabe erneut zu prüfender, defekter Sektoren
/ Blocktrennung
* Zuschneiden von Blöcken
? Kopieren nicht geprüfter Blöcke

Das in Listing 7 gezeigte Log weist keinerlei Auffälligkeiten auf, sodass Sie hier auf einen zweiten Durchgang verzichten können. Mahnt Ddrescue hingegen unter errors Fehler an, dann wiederholen Sie den Sicherungsvorgang entsprechend des Schemas aus Listing 8. Durch den Verzicht auf die Option -n versucht sich Ddrescue dann auch an den problematischen Bereichen des Datenträgers. Die Informationen dazu holt sich das Programm aus der beim ersten Durchlauf geschriebenen Protokolldatei.

Listing 7

# Mapfile. Created by GNU ddrescue version 1.20
# Command line: ddrescue -n -b8192 /dev/sdc1 usbstick.img usbstick.log
# Start time:   2015-09-24 18:06:44
# Current time: 2015-09-24 18:10:09
# Finished
# current_pos  current_status
0x7CEF0000     +
#      pos        size  status
0x00000000  0x7CF00000  +

Listing 8

$ ddrescue -b8192 /dev/sdc1 usbstick.img usbstick.log

Zum Auslesen der geretteten Daten erzeugen Sie nun schließlich einen Einhängepunkt und binden die nach dem zweiten Durchgang erzeugte Image-Datei in dieses Verzeichnis ein (Listing 9). Im geschilderten Beispiel finden Sie dann sämtliche vom USB-Stick geretteten Daten im Verzeichnis ~/usbstick-gerettet.

Listing 9

$ mkdir ~/usbstick-gerettet
$ sudo mount -o loop usbstick.img ~/usbstick-gerettet

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • ddrescue 1.20 bietet neue Funktionen
    Daten auf defekten Datenträger versucht das Werkzeug ddrescue zu retten. Dessen neue Version 1.20 führt einige kleine neue Funktionen ein und ändert zudem die Namen mehrerer Parameter. Wer das Tool in Skripten einsetzt, muss folglich aufpassen.
  • Mit dd_rescue defekte Partition wiederherstellen
    Wer regelmäßig seine Daten sichert, braucht vor Platten-Versagen keine Angst zu haben – doch manchmal vergisst man die regelmäßigen Backups. Verabschiedet sich dann die Festplatte mit einem Lesefehler, ist guter Rat teuer. Oder umsonst, wenn Sie "dd_rescue" verwenden.
  • Daten retten und wiederherstellen
    Mit den Bordmitteln von Linux lassen sich in begrenztem Umfang Dateien und Partitionen wiederherstellen sowie defekte Datenträger retten.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
  • Angetestet
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

EasyBCD/NeoGrub
Wolfgang Conrad, 17.12.2017 11:40, 0 Antworten
Hallo zusammen, benutze unter Windows 7 den EasyBCD bzw. NEOgrub, um LinuxMint aus einer ISO Dat...
Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...