Há alguns dias, todos os meus metadados em um cartão flash no formato ext4 foram substituídos.
Agora vou especular sobre como isso aconteceu. Isto é pura especulação. Aconteceu logo depois que usei um cartão diferente. O rótulo de volume na placa agora é igual ao da outra placa. Portanto, suspeito que não consegui sincronizar/desmontar o outro cartão quando o puxei. O leitor de cartão não notifica adequadamente o sistema quando um cartão é retirado, então na próxima sincronização gerada pelo sistema, o sistema não sabia que eu troquei de cartão e substituiu os metadados.
A primeira coisa que fiz quando isso aconteceu foi criar uma imagem usando dd. A segunda coisa que fiz foi tornar a imagem somente leitura. A terceira coisa que fiz foi fazer uma cópia gravável da imagem.
Descobri o photorec, que conseguiu recuperar algumas coisas, mas não todas. Acho que uma das razões para isso é que não é destrutivo.
Como alguns dos arquivos recuperados são de texto, suspeito que o photorec use informações mínimas sobre o formato do arquivo, se houver.
Para tentar recuperar qualquer um dos outros arquivos do cartão, eu precisaria saber como os arquivos são dispostos no ext2. Suspeito que o básico é que os arquivos sejam divididos em blocos, que são escritos em setores e as informações sobre como encontrar o próximo setor sejam escritas de alguma forma no setor atual.
O que preciso é de informações sobre como o ponteiro para o próximo setor está escrito.
PS: Estou lendo o código do photorec, mas estou tendo alguns problemas para lê-lo. Se sou eu ou se o código é feio, não sei.
PPS: Encontrei algumas informações sobre como os sistemas de arquivos ext são organizados, mas não consigo encontrar informações básicas sobre o layout dos arquivos.
Responder1
PhotoRec verifica um disco (ou imagem de disco) em busca de pedaços contíguos de bytes que se parecem com formatos de arquivo conhecidos (por exemplo, ele pode reconhecer JFIF/EXIF (JPEG) pelos cabeçalhos de segmento). Muito simples, mas limitado.
O kit de detetiveé uma ótima ferramenta para pesquisar sistemas de arquivos. Com um pouco de cuidado (e criando scripts para suas ferramentas e editando hexadecimalmente a imagem do disco quando ela se extraviar), ele pode ser usado para recuperação.
Para uma ferramenta que compreende ext mais profundamente, tenteext4magic? (Ainda não tive necessidade de usar isso.)
Documentation/filesystems/ext2.txt
nas fontes do kernel tem uma visão geral de alto nível da estrutura geral. OWiki Ext4tem boas informações, incluindoLayout de disco Ext4contendo mais detalhes (aplicando-se em grande parte também a ext[23]).
Mas sim, os dados de um arquivo são divididos em blocos. No ext2, cada arquivo é representado por um inode que contém blocos diretos (ponteiros para blocos de dados), blocos indiretos (que contêm ponteiros para blocos diretos), blocos indiretos duplos e blocos indiretos triplos. Não há backlinks, portanto, para encontrar os irmãos de um bloco de dados, você terá que verificar todos os inodes e ponteiros do bloco para encontrar primeiro seu proprietário.