Como um mapa setores físicos de um disco para os arquivos que os contêm em um volume HFS+ no Mac OS X

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

Pergunta

Eu tenho recuperado um disco rígido usando dd_rescue, o que me fornece uma lista de todos os setores de dispositivos que não pode copiar devido a erros de hardware.

Eu gostaria de pegar essa lista e escrever uma ferramenta para me fornecer todos os arquivos que contêm esses setores ruins para que eu possa excluí -los. Não tenho certeza de quais APIs posso usar para fazer isso-essencialmente quero obter uma lista de todos os arquivos no disco e para cada arquivo, uma lista dos intervalos de setores que ocupa no disco.

Meu primeiro palpite é que vou iterar sobre cada entrada de diretório no disco e verificar se o arquivo se sobrepõe a um desses setores ruins. Talvez exista uma maneira melhor.

Foi útil?

Solução

Se você deseja mapear o local de dados de um arquivo para um bloco físico (setor), você pode usar o fcntl (2) Ligue com o comando f_log2phys. Nem todos os sistemas de arquivos suportam esse comando, mas o HFS+ faz. Basta usar o LSEEK para escolher o deslocamento do arquivo e você pode recuperar o conjunto do DiskOfffset do F_LOG2PHYS (ele é retornado em um Struct Log2Phys no campo L2P_DEVOFFSET). Veja fcntl.h para mais detalhes.

Outras dicas

Não há API exposta para o grubbing através de sistemas de arquivos HFS+, mas o fonte do sistema de arquivos está disponível na Apple como parte do kernel XNU. Verifique também o Hfsdebug ferramenta que pode ajudar a entender o FS.

É uma pergunta antiga, mas como ainda está entre os melhores sucessos ao pesquisar o tópico, aqui estão todos que pesquisaram:

Desde o Mac OS X 10.6 fsck_hfs (8) pode mapear os setores físicos para arquivos (consulte a opção -b). Uma nota sobre uso: a correspondência só será bem -sucedida se a verificação do catálogo foi realmente realizada. Portanto, você pode precisar forçar a verificação com opções -l ou -f.

BTW, Hfsdebug como um binário PPC depende de Rosetta e, portanto, não será executado no leão ou mais tarde.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top