Ich habe eine teilweise beschädigte HD, die nicht mit dem Festplatten-Dienstprogramm repariert werden kann, die aber schreibgeschützt gemountet werden kann, wodurch die Daten darauf zugänglich sind.
Ich versuche, alle wiederherstellbaren Inhalte auf eine Ersatzfestplatte zu kopieren, aber jede Methode, die ich versuche, schlägt fehl, wenn ein Fehler auftritt – die verbleibenden Dateien werden nicht kopiert.
Ich hatte gehofft, dass Ditto den Trick machen würde, die Manpage von Ditto sagt:
dito gibt 0 zurück, wenn alles kopiert wird, ansonsten ungleich Null. ditto gibt fast nie auf und zieht es vor, Fehler auf dem Weg zu melden. Diagnosemeldungen werden als Standardfehler ausgegeben.
Ich habe Apple einen Fehler gemeldet, der nicht wie angekündigt funktioniert.
Irgendwelche anderen Ideen?
Ich benutze cp -Rfpv sourcefile destinationfile
mit Erfolg auf einer ziemlich regelmäßigen Basis.
cp = kopieren
R = Behält Dateihierarchien bei, auch im -R-Modus, cp fährt mit dem Kopieren fort, selbst wenn Fehler erkannt werden.)
f = Wenn eine vorhandene Zieldatei nicht geöffnet werden kann, entfernen Sie sie und versuchen Sie es erneut
v = Ausführlicher Modus, zeigt übertragene Dateien im Verlauf an
Quelldatei = Daten, die Sie kopieren möchten
Zieldatei = Verzeichnis/Laufwerk, in das kopiert werden soll
Wenn eine Datei aufgrund eines Fehlers nicht kopiert werden kann, wird der Job fortgesetzt und Sie sollten eine Protokollierung wie folgt sehen:
cp: sourcefile/someBadFile.txt: Input/output error
Probieren Sie Gnu ddrescue aus – es ist ein Datenwiederherstellungsprogramm, das blockbasiertes Kopieren mit beschädigter Datenwiederherstellung während der Kopiervorgänge durchführt. Sie können es für OS X erhalten, wenn Sie Homebrew verwenden , indem Sie in ein Terminalfenster eingeben:
brew install ddrescue
Eine Anleitung auf arstechnica beschreibt, wie man eine ausgefallene Festplatte mit ddrescue rettet. Lesen Sie unbedingt die Anleitung durch, da sie hilfreiche Informationen enthält. Hier ist ein Überblick darüber, wie Sie dorthin gelangen.
Suchen Sie das Laufwerk mit diskutil list
. Die ID-Spalte ist das, wonach Sie suchen:
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *750.2 GB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_HFS Macintosh HD 2 80.0 GB disk1s2
3: Apple_HFS Home 509.1 GB disk1s3
Unmounten Sie die betreffende Festplatte:
diskutil unmount /dev/disk1s3
Starten Sie eine Rettungsaktion der Festplatte in ein Image. Stellen Sie sicher, dass der Standort von Rescue.dmg
durch Ihren gewünschten Standort ersetzt wird.
sudo /usr/local/bin/ddrescue -v -n -c 4096 /dev/disk1s3 Rescue.dmg Rescue.log
Stellen Sie das Image auf einem neuen Laufwerk wieder her:
sudo /usr/local/bin/ddrescue --force -v -c 4096 Rescue.dmg /dev/disk2s0 recovery.log
Es wird empfohlen, auch das Handbuch von ddrescue zu lesen, um sich über die verfügbaren Optionen zu informieren, indem Sie man ddrescue
.
Ich verwende gerne, rsync
um Dateien von einer beschädigten Quelle zu einem funktionierenden Ziel zu kopieren:
rsync -auv --delete --ignore-errors /path/to/source/ /path/to/destination/
Woher:
-a
= "Archivmodus" = rekursiv in Verzeichnisse, kopiert Symlinks als Symlinks, behält Berechtigungen, Zeiten, Gruppen und spezielle Dateien bei, behält auch Besitzer (wenn Besitzer = root) und Geräte (wenn Besitzer = root)
-u
= überspringt die Datei in der Quelle, wenn die entsprechende Kopie im Ziel neuer ist
-v
= ausführliche Ausgabe
--delete
= Dateien im Ziel , die auf der Quelle nicht existieren , werden gelöscht
--ignore-errors
= löscht eine Datei/ein Verzeichnis im Falle eines E/A-Fehlers während des Kopiervorgangs
Dieser Macworld-Tipp schlägt vor, dd zu verwenden, um eine Bit-für-Bit-Kopie zu erstellen (Fehler ignorieren) und dann das resultierende Image im Finder zu mounten, um Ihre Dateien wiederherzustellen. Ich habe es nicht ausprobiert, aber es hört sich so an, als ob es funktionieren könnte.
Sie könnten den dd
Befehl verwenden, um eine Block-für-Block-Kopie von Ihrer beschädigten Festplatte auf Ihre neue Festplatte durchzuführen.
Angenommen, Ihre neue Festplatte ( /dev/disk2
) hat die gleiche oder eine größere Größe als Ihre beschädigte Festplatte ( /dev/disk1
), dann können Sie Folgendes ausgeben:
dd if=/dev/disk1 of=/dev/disk2 bs=4096 conv=notrunc,noerror
blocksize @ 4k, keine Datenblöcke abschneiden, alle Fehler ignorieren
Um die Gerätenamen zu finden, führen Sie mount
zuerst vom Terminal aus.
Sie können versuchen, SuperDuper auszuführen und die Dateien mit io-Fehlern zu ignorieren, wenn es nur wenige sind und Sie die Smart-Update-Funktion verwenden, die eine ziemlich effektive Methode ist, um die meisten Daten zu entfernen. (Ich denke, der dd-Befehl wäre vorzuziehen, wenn Sie das können).
Schritte:
Der ditto
Befehl sollte funktionieren, ich würde ihn ditto
in Verbindung mit der -v
Option für verbose verwenden, damit Sie genau sehen können, was Ihnen einen Fehler von dem gibt, was er kopiert.
Wenn Ihr Laufwerk noch zugänglich ist und Sie die Dateihierarchie sehen können, aber nur der Kopiervorgang wegen Fehlern stoppt, können Sie das Unstoppable Copier
(nur Windows) Programm verwenden.
spionieren
--ignore-errors
Antworten unten.