So weisen Sie rsync an, Dateien auf einem beschädigten Festplattenblock zu überspringen, anstatt beim Lesen hängen zu bleiben

13

Ich versuche, Dateien von einer Festplatte mit Hardwarefehlern wiederherzustellen.

Die Festplatte wurde vom Festplatten-Dienstprogramm repariert, es wurde mir jedoch mitgeteilt, dass die Festplatte beschädigt ist. Daher muss ich alles sichern, bevor ein Fehler auftritt.

Also habe ich versucht, die Dateien über den Finder zu kopieren, aber es bleibt hängen. Versuchte andere Dienstprogramme und sie stecken fest beim Versuch, die Dateien zu kopieren, wenn der Kopf den beschädigten Block trifft.

Also habe ich es mit rsync versucht und es scheint zu funktionieren; aber es dauert ewig, wenn ich einen schlechten Block treffe.

Ich habe mich also gefragt, ob es eine Möglichkeit gibt, Rsync anzuweisen, sich nicht einmal mit einer Datei zu beschäftigen, wenn es zu lange dauert. Entweder kann ich die Anzahl der Versuche mit jeder Datei angeben oder wie lange muss es für jede Datei versucht werden?

Ich bin mir nicht sicher, wie lange dieses Laufwerk wirklich halten wird, daher möchte ich alle Daten so schnell wie möglich entfernen, solange ich sie noch bereitstellen und die Daten im Finder anzeigen kann.

Dies ist, was ich als Befehl benutze; Bitte geben Sie an, ob es eine Möglichkeit gibt, den Versuch einer Datei zu reduzieren, damit ich rsync verwenden kann, um zu versuchen, die beschädigten Blöcke zu lesen, aber vermeiden Sie es, zu lange in einem bestimmten Sektor hängen zu bleiben.

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup

Danke im Voraus.

Rataplan
quelle
3
Wenn das Laufwerk Sektoren beschädigt hat, sollten Sie besser versuchen, das Laufwerk mit so etwas wie einem Image zu versehen. dd_rescueEs verfügt über erweiterte Funktionen, um mit fehlerhaften Sektoren fertig zu werden.
jmreicha
Ich denke, @jmreicha hat die richtige Idee, aber in Zukunft, wenn Sie rsync technische Fragen haben, sind freundliche Gurus auf der rsync-Liste verfügbar: lists.samba.org/mailman/listinfo/rsync
Joe

Antworten:

10

Kurze Antwort: rsyncIn diesem Fall ist es nicht das richtige Werkzeug: Die Verwendung kann sogar schädlich sein.
Verwenden Sie ddrescuestattdessen (besser als dd_rescue). Es ist in der Lage zu tun, was Sie verlangen.


Wenn die Festplatte physikalisch beschädigt ist, besteht die Möglichkeit , auf Ziegel es mit jedem Versuch , sie zu reparieren.

Es ist nicht nur eine Frage über die Nutzung Ihrer Zeit , wenn es rsyncscheint, für immer in der Nähe eines beschädigten Sektors zu hängen. Das Problem ist, dass bei wiederholten Vorgängen ein irreparabler Fehler auftreten kann und Sie Ihre Daten dann nicht mehr ohne teuren Ersatz von Teilen retten können (immer dann, wenn dies noch möglich ist und Sie Ihre Festplatte nicht gemauert haben ).

In diesem Fall ist das sicherste Verfahren, das ich gefunden habe

  1. So erstellen Sie ein Rohabbild auf einer anderen, nicht beschädigten Festplatte
  2. So erstellen Sie eine Kopie dieses Bildes.
  3. Um die Arbeit an der Kopie des zu beheben Dateisystem und die Dateien zu retten .

Warum die Kopie? Denn wenn beim Fixieren des Dateisystems ein Fehler auftritt, können Sie jederzeit erneut starten, ohne die ursprünglich beschädigte Festplatte erneut berühren zu müssen .

Ich empfehle Ihnen ddrescue, das Raw-Disk-Image zu verwenden, einschließlich der eingeschlossenen Fehler, da es auch bei Lesefehlern einwandfrei funktioniert.


Wie es geht ddrescue

Sie können ddrescuegenau so verwenden , wie Sie möchten rsync, die beschädigten Sektoren überspringen, ohne sie erneut zu versuchen oder zu teilen, und so viele Daten wie möglich kopieren.
Dieser Befehl ist hier unten (anstelle von /dev/hda1Sie werden Ihr Gerät setzen):

ddrescue --no-split /dev/hda1 imagefile logfile

Nachdem Sie diese erste Passage (die schnellere ) durchgeführt haben, können Sie versuchen, sie zu verfeinern, indem Sie im Fehlerfall dreimal darauf zugreifen.

ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile 

Sie können das Bild weiter verfeinern, indem Sie die ddrescueBefehlsaufrufe mit anderen Optionen wiederholen und jedes Mal versuchen, weitere Daten zu extrahieren (siehe Referenzen). Wenn Sie fertig sind, können Sie die Kopie erstellen (wenn Sie über den erforderlichen Speicherplatz verfügen) und dann das Dateisystem reparieren .

Beachten Sie, dass das rohe Bild so groß wie das Original sein wird HDD .
Im Internet, auf dieser und auf anderen Websites von StackExchange finden Sie viele Fragen und Antworten zum Speichern von Daten mit ddrescueoder anderen Tools.

Verweise:

Hastur
quelle
in der Tat ist dd_rescue der richtige Weg. Ich hatte es in meiner ursprünglichen Antwort vor 2 Jahren; aber aus irgendeinem Grund entschied jemand, dass ich meine eigene Frage nicht beantworten konnte :) Danke für die Antwort und die tollen Details
Rataplan
@newbiez: Stattdessen hatte ich eine schwere Scheibe Problem mit meinem fast gemauerten Haupt HDD ... so dass ich traf ddrescueund seine Freunde :-) Über Ihre Antwort nur ein Wort: seltsam ... poste es immer , wenn jemand versucht , sich wieder zu schließen Ich werde mit Ja stimmen, um wieder zu öffnen (ich habe diese neue Kraft nie benutzt : D)
Hastur
1
Die Option --no-split wurde in neueren Versionen von ddrescue entfernt. Verwenden Sie stattdessen --no-scrape. Siehe lists.gnu.org/archive/html/bug-ddrescue/2015-09/msg00001.html
Grmpfhmbl