Comment une carte des secteurs physiques d'un disque pour les fichiers qui les contiennent sur un volume HFS + sous Mac OS X

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

Question

Je suis récupérons un disque dur en utilisant dd_rescue , qui me fournit une liste de tous les secteurs de l'appareil, il ne pouvait pas copier en raison d'erreurs matérielles.

Je voudrais prendre cette liste, et d'écrire un outil pour me donner tous les fichiers qui contiennent ces secteurs défectueux afin que je puisse les supprimer. Je ne sais pas ce que je peux utiliser les API pour ce faire - essentiellement je veux obtenir une liste de tous les fichiers sur le disque et pour chaque fichier, une liste des gammes de secteurs qu'elle occupe sur le disque

.

Ma première hypothèse est que j'itérer sur chaque entrée du répertoire sur le disque et vérifiez si le fichier chevauche un de ces secteurs défectueux. Peut-être qu'il ya une meilleure façon.

Était-ce utile?

La solution

Si vous voulez mapper l'emplacement de données d'un fichier à un bloc physique (secteur), vous pouvez utiliser le fcntl (2) appeler avec la commande F_LOG2PHYS. Tous les systèmes de fichiers pris en charge cette commande, mais ne HFS +. Il suffit d'utiliser lseek pour choisir le fichier offset et vous pouvez récupérer le diskoffset de F_LOG2PHYS (il est retourné dans un log2phys struct dans le domaine l2p_devoffset). Voir fcntl.h pour plus de détails.

Autres conseils

Il n'y a pas API exposée pour arrachages par HFS +, mais le source pour le système de fichiers est disponible d'Apple dans le cadre du noyau XNU. Consultez également le hfsdebug outil qui pourrait aider à comprendre les fs.

Il est une question ancienne, mais comme il est toujours parmi les grands succès lors de la recherche du sujet, voici à tous ceux qui recherche:

Depuis Mac OS X 10.6 fsck_hfs (8) peut cartographier les secteurs physiques des fichiers (voir option -B). Une note sur l'utilisation: mise en correspondance ne sera couronnée de succès si la vérification du catalogue a été effectivement réalisée. Donc, vous pourriez avoir à forcer la vérification avec des options ou -f -l.

BTW, hfsdebug comme binaire PPC repose sur Rosetta et donc ne fonctionnera pas sur Lion ou tard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top