Come si fa a mappa settori fisici di un disco per i file che li contengono in un volume HFS + su Mac OS X

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

Domanda

Ho Ripristino di un disco rigido utilizzando dd_rescue , che mi fornisce un elenco di tutti i settori dei dispositivi non potrebbe copiare a causa di errori hardware.

Mi piacerebbe prendere quella lista, e scrivere uno strumento per darmi tutti i file che contengono questi settori danneggiati modo che io possa eliminare. Non sono sicuro di quello che le API che posso usare per fare questo - essenzialmente voglio ottenere un elenco di tutti i file sul disco e per ogni file, un elenco delle gamme dei settori che occupa sul disco

.

La mia prima risposta è che io iterare su ogni voce di directory sul disco e controllare per vedere se il file si sovrappone uno di questi settori danneggiati. Forse c'è un modo migliore.

È stato utile?

Soluzione

Se si desidera mappare dati di posizione di un file ad un blocco fisico (settore), è possibile utilizzare il fcntl (2) chiamare con il comando F_LOG2PHYS. Non tutti i file system supportano questo comando, ma HFS + fa. Basta usare lseek per scegliere il file di offset e si può ottenere indietro il diskoffset da F_LOG2PHYS (è tornato in una struttura log2phys nel campo l2p_devoffset). Vedere fcntl.h per maggiori dettagli.

Altri suggerimenti

Non c'è API esposte per l'estirpazione attraverso HFS + file system, ma il fonte per il filesystem è disponibile da Apple come parte del kernel XNU. Verificate anche la hfsdebug strumento che potrebbe aiutare a comprendere le fs.

E 'una vecchia questione, ma dal momento che è ancora tra i primi successi durante la ricerca l'argomento, ecco a tutti coloro che hanno cercata:

Dal momento che Mac OS X 10.6 fsck_hfs (8) possono mappare settori fisici di file (vedi opzione -B). Una nota sull'utilizzo: corrispondenza avrà successo solo se la verifica del catalogo è stata effettivamente eseguita. Così si potrebbe avere per forza il controllo con le opzioni -l o -f.

A proposito, hfsdebug come binario PPC si basa su Rosetta e quindi non verrà eseguito su Lion o successivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top