Wie funktioniert eine Karte physikalischen Sektoren einer Festplatte auf die Dateien, die sie auf einem HFS + Volume auf Mac OS X enthalten

StackOverflow https://stackoverflow.com/questions/1384436

Frage

Ich habe mit einer Festplatte erholt dd_rescue , der mich sieht eine Liste der alle Gerätebereiche es aufgrund von Hardware-Fehler nicht kopieren kann.

würde Ich mag diese Liste nehmen, und ein Werkzeug schreibt alle Dateien geben Sie mir, dass diese schlechten Sektoren enthalten, damit ich sie löschen kann. Ich bin sicher nicht das, was ich APIs verwenden kann, um dies zu tun -. Im Wesentlichen Ich möchte eine Liste aller Dateien auf der Festplatte erhalten und für jede Datei, eine Liste der Bereiche von Sektoren, die er auf der Festplatte belegt

Meine erste Vermutung ist, dass ich auf der Platte jeder Verzeichniseintrag iterieren wird und prüfen Sie, ob die Datei einen dieser fehlerhaften Sektoren überlappt. Vielleicht gibt es einen besseren Weg.

War es hilfreich?

Lösung

Wenn Sie eine Datei des Datenstelle zu einem physischen Block (Sektor) zuordnen möchten, können Sie die fcntl (2) mit dem Befehl F_LOG2PHYS nennen. Nicht alle Dateisysteme unterstützen diesen Befehl, aber HFS + tut. Verwenden Sie einfach lseek die Datei zu holen versetzt und Sie können die diskoffset von F_LOG2PHYS zurück (es ist in einer Struktur log2phys im l2p_devoffset Feld zurückgegeben wird). Siehe fcntl.h für weitere Details.

Andere Tipps

Es gibt keine API für die Rodung durch HFS + Dateisysteme ausgesetzt, aber die Quelle für das Dateisystem ist von Apple als Teil des XNU Kernel zur Verfügung. Sie können auch das hfsdebug -Tool, das die fs zu verstehen, könnte helfen.

Es ist eine alte Frage, aber da es immer noch unter den Top-Hits ist, wenn das Thema der Suche, hier ist für alle, die gesucht:

Seit Mac OS X 10.6 fsck_hfs (8) physikalische Sektoren auf Dateien abbilden (siehe Option -B). Ein Hinweis auf Nutzung: Matching wird nur dann erfolgreich sein, wenn der Katalog Überprüfung tatsächlich durchgeführt wurde. So müssen Sie möglicherweise zwingen, mit den Optionen -l oder -f überprüfen.

BTW, hfsdebug als PPC binären beruht auf Rosetta und wird somit nicht auf Lion oder höher ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top