1 TB WD USB HDD wird nur noch als RAW angezeigt

Es wäre praktisch, den Logfile nach dem ersten Durchgang zu sichern(unter anderem Namen)
Damit kann man dann im Vergleich mit dem Log nach dem 2. Durchgang die Verbesserung der Situation ablesen
der zusätzliche Parameter -c 1 bearbeitet die verbliebenen nicht kopierten Sektoren einzeln
der zusätzliche Parameter -r 0 macht die Sache schneller (keine Retries nach einem Fehler)

Wenn Du willst, kannst Du die Logs gezippt in den Anhang stellen.
Aus den Positionen der Fehlstellen kann man abschätzen, ob das Filesystem schwer getroffen ist und die beste Rettungsmethode wählen
 
Aber bitte doch, siehe unten. Wie gesagt: Die Fehlersize war gering (~ 100 MiB) und es fehlt anscheinend nicht viel. Aber vielleicht erkennst du ja mehr durch das Log :)
 

Anhänge

Das sieht ja putzig aus - über 1000 Fehlstellen, die meist noch in regelmäßigen Intervallen auftreten.
lass mal das ddrescue mit zusätzlichen Parametern -c 1 -r 0 einmal durchlaufen
also zB ddrescue -B -n -c 1 -r 0 /dev/sdb /dev/sdc /mnt/rescued.log
und sehen wir uns das dann nochmals an.
 
So, wollte es gerade mal laufen lassen....

Die defekte HDD ist sdg, die neue ist sdf.

Erst einmal der Versuch ohne Force:

root@sysresccd /root % ddrescue -B -n -c 1 -r 0 /dev/sdg /dev/sdf /mnt/rescued.log
ddrescue: Output file exists and is not a regular file.
ddrescue: Use `--force' if you really want to overwrite it, but be
aware that all existing data in output file will be lost.
Try `ddrescue --help' for more information.

Mit force passiert dann gar nichts, da er schon fertig ist..

root@sysresccd /root % ddrescue -B -n -c 1 -r 0 --force /dev/sdg /dev/sdf /mnt/rescued.log


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 953822 MiB, errsize: 48172 KiB, errors: 1012
Current status
rescued: 953822 MiB, errsize: 48172 KiB, current rate: 0 B/s
ipos: 0 B, errors: 1012, average rate: 0 B/s
opos: 0 B, time from last successful read: 0 s
Finished

Mache ich irgendwas falsch? Ich hab das alte Logfile immer noch auf C: (dachte, das wird gebraucht, um die fehlerhaften Stellen zu lokalisieren)
 
Zuletzt bearbeitet:
Habs bis jetzt immer noch nicht hinbekommen. Kann ich denn ddrescue irgendwie vorgeben, trotzdem noch einmal über die Stellen drüberzugehen? Hab per "manual" keinen passenden Befehl gefunden.
 
Hole das Thema noch einmal hoch, da ich es immer noch nicht geschafft habe, ddrescue erneut drüberlaufen zu lassen. Gibt es irgendeinen Trick, mit dem ich ddrescue vorgaukeln kann, es sei noch nicht fertig?!
 
Wenn ddrescue wieder ganz von vorne beginnt, dann hast Du den logfile vom letzten Lauf nicht wieder zugeordnet. Der sollte sinnvollerweise auf einem USB-Stick oder einer gemounteten Partition einer anderen Platte liegen.
Wenn alle Sektoren fehlerfrei übertragen wurden, dann ist natürlich nichts mehr zu tun...
 
Zuletzt bearbeitet:
Das Problem ist ja nicht, dass es von vorne anfängt, sondern eben gar nicht. Das Logfile liegt vollkommen intakt im oben angegeben Platz auf der HDD, jedoch meldet ddrescue "Finished" und sonst tut sich nichts..
 
Ist immer noch genau der selbe, wie ich ihn oben (Post #42) angehängt habe.
 
Neues-Jahr Bump ;)

Gerade eben noch einmal probiert:

ddrescue-Befehl: ddrescue -B -n -c 1 -r 0 --force /dev/sdc /dev/sdb /mnt/rescued.log

Code:
root@sysresccd /root % fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074968

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   102402047    51097600    7  HPFS/NTFS/exFAT
/dev/sda3       102402048   853891071   375744512    7  HPFS/NTFS/exFAT

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe8900690

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63  1953520054   976759996    7  HPFS/NTFS/exFAT

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe8900690

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63  1953520054   976759996    7  HPFS/NTFS/exFAT
root@sysresccd /root % ntfs-3g /dev/sda2 /mnt 
root@sysresccd /root % ddrescue -B -n -c 1 -r 0 --force /dev/sdc /dev/sdb /mnt/rescued.log 


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:  953822 MiB,  errsize: 48172 KiB,  errors:    1012
Current status
rescued:  953822 MiB,  errsize: 48172 KiB,  current rate:        0 B/s
   ipos:         0 B,   errors:    1012,    average rate:        0 B/s
   opos:         0 B,     time from last successful read:       0 s
Finished
root@sysresccd /root %

Wenn ich mir jetzt die möglichen Parameter anschaue, wird es wohl an den falschen Optionen für den 2.Durchlauf liegen.
Code:
root@sysresccd /root % ddrescue --help
GNU ddrescue - Data recovery tool.
Copies data from one file or block device to another,
trying hard to rescue data in case of read errors.

Usage: ddrescue [options] infile outfile [logfile]
You should use a logfile unless you know what you are doing.

Options:
  -h, --help                     display this help and exit
  -V, --version                  output version information and exit
  -a, --min-read-rate=<bytes>    minimum read rate of good areas in bytes/s
  -b, --block-size=<bytes>       sector size of input device [default 512]
  -B, --binary-prefixes          show binary multipliers in numbers [SI]
  -c, --cluster-size=<sectors>   sectors to copy at a time [128]
  -C, --complete-only            do not read new data beyond logfile limits
  -d, --direct                   use direct disc access for input file
  -D, --synchronous              use synchronous writes for output file
  -e, --max-errors=[+]<n>        maximum number of [new] error areas allowed
  -E, --max-error-rate=<bytes>   maximum growth per second of error size
  -f, --force                    overwrite output device or partition
  -F, --fill=<types>             fill given type blocks with infile data (?*/-+)
  -g, --generate-logfile         generate approximate logfile from partial copy
  -i, --input-position=<bytes>   starting position in input file [0]
  -I, --verify-input-size        verify input file size with size in logfile
  -m, --domain-logfile=<file>    restrict domain to finished blocks in file
[B]  -M, --retrim                   mark all failed blocks as non-trimmed[/B]
  -n, --no-split                 do not try to split or retry failed blocks
  -o, --output-position=<bytes>  starting position in output file [ipos]
  -p, --preallocate              preallocate space on disc for output file
  -q, --quiet                    suppress all messages
  -r, --max-retries=<n>          exit after given retries (-1=infinity) [0]
  -R, --reverse                  reverse direction of copy operations
  -s, --max-size=<bytes>         maximum size of input data to be copied
  -S, --sparse                   use sparse writes for output file
  -t, --truncate                 truncate output file to zero size
  -T, --try-again                mark non-split, non-trimmed blocks as non-tried
  -v, --verbose                  verbose operation
  -x, --extend-outfile=<bytes>   extend outfile size to be at least this long
Numbers may be followed by a multiplier: b = blocks, k = kB = 10^3 = 1000,
Ki = KiB = 2^10 = 1024, M = 10^6, Mi = 2^20, G = 10^9, Gi = 2^30, etc...

Report bugs to bug-ddrescue@gnu.org
Ddrescue home page: http://www.gnu.org/software/ddrescue/ddrescue.html
General help using GNU software: http://www.gnu.org/gethelp
root@sysresccd /root %

Vielleicht kann mir ja jemand die passenden Parameter nennen, damit ich die ganze Sache nach mehr als einem halben Jahr endlich mal weiterbringe :)
Ergänzung ()

Hab jetzt in der ddrescue-Anleitung von Ernst@at gesehen, dass beim Nachkorigieren folgender Befehl verwendet werden kann/soll:

ddrescue -B -c 1 -C -d -r 100 /dev/sdb /dev/sda /mnt/rescued.log

Mein Befehl sah ja so aus:

ddrescue -B -n -c 1 -r 0 --force /dev/sdc /dev/sdb /mnt/rescued.log

Was bei mir fehlt ist dann folgendes:

-C, --complete-only do not read new data beyond logfile limits
-d, --direct use direct disc access for input file


und natürlich die erhöhte Versuchs-Anzahl. Was bei mir heute noch drinnen war:

-n, --no-split do not try to split or retry failed blocks

Wenn man jetzt nach dem Wortlaut gehen darf, müsste das ja der Parameter sein, der verhindert, dass ddrescue noch einmal über die fehlerhaften Bereiche drübergeht, oder?

Soll ich es einfach noch einmla mit dem von Ernst angegebenen Befehl probieren? Würde ungern irgendwas kaputt machen, indem ich auf eigene Faust was versuche...
 
Prinzipiell kanns Du nichts kaputt machen, solange die Angaben für Quell- und/oder Zielplatte nicht falsch sind.
Bei falscher Angabe (eines nicht existierenden) Logfiles fängt er einfach mit dem kopieren bereits übertragener Bereiche nochmals an und kann jederzeit abgebrochen werden, ohne dass ein Schaden entsteht.

Die Option -C ist hier ohne Bedeutung, nur wenn der Erstlauf über einen eingeschränkten Bereich ausgeführt wurde, kann hier über diese im Logfile vermerkten Grenzen weitergearbeitet werden.

Die Option -r 0 hatte in einer früheren Version von ddrescue offenbar funktioniert, versuche da mal -r 3 (-r 100 ist in diesem Stadium unzweckmäßig, solange nicht nur eine Handvoll Fehlstellen übrig sind, da er sonst an einem einzigen Sektor 100 Minuten rumnuckelt, bevor er den nächsten probiert. In letzter Verzweiflung kann man mit -r 100 und durch Lageänderung zB Hochstellen der Platte oder Änderung der Betriebsstemperatur auf +10° vielleicht doch noch positive Ergebnisse bekommen)

Bei Advanced Format(4K physisch) Platten ist -c 1 kontraproduktiv, da sollte besser mit -c 8 gearbeitet werden. Die EADS sollte aber noch physisch 512B haben.

Offenbar hat sich da bei ddrescue in den letzten 2 Jahren einiges verändert http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html Diese Beschreibung ist aber für Version 1.16, im Logfile Post#42 ist aber Version 1.15 aktiv gewesen.
Neu scheint die automatische Aufsplittung bei fehlerhaften Stellen zu sein, die man im Erstlauf mit -n unterbinden sollte. Auch der Parameter -f (--force) war früher nicht notwendig.

Probier es einfach mal mit den Optionen -B -d -c1 -f -r3, mal sehen, ob er dann weiternuckelt.
Nach meinem Verständnis müsste zumindest der Befehl mit diesen Optionen im Logfile vorne angeführt sein, wenn sich schon sonst nichts verändert hat, ansonsten ist was anderes faul.

könnte ja wirklich am -n gelegen sein
 
Zuletzt bearbeitet:
Danke für die Antwort. DDRescue läuft seit nunmehr 4 Stunden mit den von dir angegebenen Parameter. 3 MB wurden geklont, dafür mehr als 1000 neue Fehler gefunden. Geschwindigkeit liegt bei ~ 200 B/s. Bin mal gespannt, wie lange der zweite Durchlauf dauern wird...
Ergänzung ()

So siehts nach ~ 7,5 Stunden aus:

root@sysresccd /root % ddrescue -B -d -c1 -f -r3 /dev/sdc /dev/sdb /mnt/rescued.log


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 953822 MiB, errsize: 48172 KiB, errors: 1012
Current status
rescued: 953825 MiB, errsize: 45736 KiB, current rate: 0 B/s
ipos: 4265 MiB, errors: 1893, average rate: 246 B/s
opos: 4265 MiB, time from last successful read: 3 m
Splitting failed blocks...
Interrupted by user
root@sysresccd /root % ddrescue -B -d -c1 -f -r3 /dev/sdc /dev/sdb /mnt/rescued.log


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 953825 MiB, errsize: 45736 KiB, errors: 1893
Current status
rescued: 953827 MiB, errsize: 42837 KiB, current rate: 0 B/s
ipos: 3011 MiB, errors: 3016, average rate: 236 B/s
opos: 3011 MiB, time from last successful read: 22.3 m
Splitting failed blocks...
Interrupted by user
root@sysresccd /root % ddrescue -B -d -c1 -f -r3 /dev/sdc /dev/sdb /mnt/rescued.log


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 953827 MiB, errsize: 42837 KiB, errors: 3016
Current status
rescued: 953827 MiB, errsize: 42837 KiB, current rate: 0 B/s
ipos: 3011 MiB, errors: 3016, average rate: 0 B/s
opos: 3011 MiB, time from last successful read: 57,1 m
Splitting failed blocks...

Scheint wohl gerade an einem Bereich angekommen zu sein, an dem nicht mehr viel geht. Das aktuelle Log ist nahezu doppel so groß wie das Log vor dem 2. Durchlauf! Teilweise sind mehr als 1000 neue Sektoren am Stück drinnen...
 

Anhänge

Nun, der Log zeigt, dass ddrescue im zweiten Lauf bisher bloss auf den ersten 3TB der Platte beschäftigt war, noch bevor es richtig interessant wird:
Du solltest es mal weiterlaufen lassen, bis es diese Hürde passiert hat:
0xBC66A000 0x0399DE00 +
0xC0007E00 0x00001000 -
0xC0008E00 0x00006000 +
0xC000EE00 0x00001200 -
0xC0010000 0x4A264000 +

Denn dort liegt justament der Beginn des NTFS-Index, der $MFT, und gerade dort 17 nicht lesbare Sektoren...

um es zu beschleunigen, solltest Du die Parameter abändern auf
-B -d -c1 -f -r0
bis diese Adressen bearbeitet sind, dann sehen wir weiter
 
Zuletzt bearbeitet:
Alles klar, Danke dir. Kann ich mir denn während dem Vorgang irgendwie anzeigen lassen, bei welchen Sektoren (ich nehme mal an dass diese Buchstaben/Zahlen-Kombis Sektoren sind) sich ddrescue gerade befindet? Sonst müsste ich ja alle paar Minuten abbrechen und das logfile checken :confused_alt:
 
Die Angaben 0x ... sind hexadezimale Byteoffsets vom Plattenbeginn weg.
Der kritische Punkt, wo die Fehler in der $MFT liegen, ist bei ipos=3072MiB. Die ipos wird ja angezeigt...
Wenn er dort fertiggenuckelt hat, springt ipos zum nächsten Fehler auf den Wert 4258MiB.
Bei diesem oder einem höheren Wert kannst Du abbrechen und wieder mal den log posten.
 
Zuletzt bearbeitet:
Bitteschön:
root@sysresccd /root % ddrescue -B -d -c1 -f -r0 /dev/sdb /dev/sdc /mnt/rescued.log


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 953827 MiB, errsize: 42837 KiB, errors: 3016
Current status
rescued: 953828 MiB, errsize: 42581 KiB, current rate: 0 B/s
ipos: 4261 MiB, errors: 3215, average rate: 69 B/s
opos: 4261 MiB, time from last successful read: 1 s
Splitting failed blocks...
Interrupted by user
root@sysresccd /root %
 

Anhänge

Nun, die Fehlstellen am Beginn der $MFT konnten in einem Versuch nicht gelesen werden.
um das an dieser Stelle zu wiederholen, musst Du im Logfile die 4. Zeile abändern.
Derzeit steht dort
0x10A5D3200 /
und sollte abgeändert werden auf
0xC0007E00 -

Dann lässt Du ddrescue diese Stellen intensiv beackern mit den Optionen
-B -d -c1 -f -r100
bis ipos zum nächsten Fehler danach auf den Wert 4258MiB oder höher steigt.
mal hoffen, dass dies erfolgreich ist, ansonsten fehlen die Informationen von 5 Dateien, die nicht mehr auffindbar sind
 
Zuletzt bearbeitet:
Hier das Log mit -r100
 

Anhänge

Hat so gut wie gar nichts genutzt. Lass ihn den Rest der Platte mit r1 weitertuckern.
Dann werden wir mal sehen, ob und wie wir die $MFT reparieren können.
 
Zurück
Oben