• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[TIP] defekte Partionen wiederherstellen mit dd-rescue

http://www.linux-user.de/ausgabe/2004/08/048-dd-rescue/

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....
 
Falls es schon zu spät ist(tm), sollte man dd_rescue nicht einsetzen, sondern wenn möglich die Partition mounten und mit rsync/cp abkopieren. Somit werden unbelegte Bereiche nicht unnötigerweise ausgelesen (bei Fehlern dauert das entsprechend lange, weil die Platte ja mehrere Leseversuche macht).
 
jengelh schrieb:
bei Fehlern dauert das entsprechend lange, weil die Platte ja mehrere Leseversuche macht.

das ist doch gerade der Trick von dd-rescue, das die defekten Sektoren erst mal übersprungen werden ...
 
Weit gefehlt. dd_rescue macht auch nichts anderes als read() über die ganze Platte. Defekte Sektoren werden gelesen - da kannst du nichts dran ändern, allerdings tauchen dafür dann Nullbytes in der Ausgabedatei auf (was ja auch richtig ist).

Worauf ich hinweisen will:
Sonstiges Kopieren liest aber nur die Dateien und deren Metadaten, nicht die LEEREN Blöcke...
oder reden wir aneinander vorbei?

/dev/hde1 71867832 29069336 39147728 43% /home
Machst du dd_rescue von diesem Laufwerk, liest das alle 71 GB ein. Ein cp dagegen liest nur die 29 GB ein. Der Erfolg liegt auf der Hand.
 
Imagine, one of your partitions is crashed, and as there are some hard errors, you don't want to write to this hard disk any more. Just getting all the data off it and retiring it seems to be suitable. However, you can't access the files, as the file system is damaged.
wie macht cp das, wenn das File-System beschädigt ist ?

Copying this partition with normal Un*x tools like cat or dd will fail, as those tools abort on error. dd_rescue instead will try to read and if it fails, it will go on with the next sectors. The output file naturally will have holes in it, of course. You can write a log file, to see, where all these errors are located.
Würde cp nicht auch abbrechen bei einem defekten Sektor ?

If you have one spot of bad sectors within the partition, it might be a good idea, to approach this spot from both sides. Reverse direction copy is your friend.
kann cp sich auch einer defekten Stelle auf der Festplatte von beiden Seiten nähern ?

Es geht hier um ein worst-case Scenario: kopieren von defekten Datenträgern. Nicht um Backups!
 
Naehert sich dd_rescue nicht auch systematisch den defekten Sektoren immer naeher an?
Sprich ueberspringt erstmal, und grenzt dann naeher ein ?
 
Keepers schrieb:
Naehert sich dd_rescue nicht auch systematisch den defekten Sektoren immer naeher an?
Sprich ueberspringt erstmal, und grenzt dann naeher ein ?
jepp, genau so arbeitet dd-rescue.

man kann es sogar unterbrechen und punktgenau wieder fortsetzen.
 
Keepers schrieb:
Das System neu starten oder dd_rescue :?:
dd_rescue :)

und noch einfacher zu bedienen: dd_rhelp, ein wrapper -script um dd_rescue
siehe dazu auch die Doku in //usr/share/doc/packages/ddrescue/README.dd_rhelp
 
Code:
dd_rescue /dev/hda /hdcmnt/hdakopie
Und wenn's dann z.B. bei 19 GB zu langsam wird, von der anderen Seite ein GB weiter:
Code:
dd_rescue -rs $[20*1048576] /dev/hda /hdcmnt/hdakopie
Und wenn das zu langsam wird, biste wieder da, dann geht's wieder vorwärts:
Code:
dd_rescue -s $[20*1048576] /dev/hda /hdcmnt/hdakopie
Ja, das kann ganz schön haarsträubend sein. Man kann natürlich auch
Code:
dd_rescue -B $[64*1024]
oder mehr nehmen, aber man lässt potentiell mehr Daten aus...
 
genau das macht dd_rhelp :)

What is dd_rhelp ?

dd_rhelp is a bash script that handles a very usefull program written in C by
Kurt Garloff which is called dd_rescue, it roughly act as the dd linux command
with the caracteristic to NOT stop when it falls on read/write errors.

This makes dd_rescue the best tool for recovering hard drive having bad
sectors. (dd_rescue can be found : http://www.garloff.de/kurt/linux/ddrescue )

But using it is quite time consuming. This is where dd_rhelp come to help.

In short, it'll use dd_rescue on your entire disc, but will try to gather the
maximum valid data before trying for ages on badsectors. So if you leave
dd_rhelp work for infinite time, it'll have the same effect as a simple
dd_rescue. But because you might not have this infinite time (this could
indeed take really long in some cases... ), dd_rhelp will jump over bad
sectors and rescue valid data. In the long run, it'll parse all your device
with dd_rescue.
You can Ctrl-C it whenever you want, and rerun-it at will, it'll resume it's
job as it depends on the log files dd_rescue creates.

In addition, progress will be shown in a ASCII picture of your device beeing
rescued.

....
 
Oben