Alguns dias atrás, todos os meus metadados em um cartão flash de formato ext4 foram substituídos.
Agora vou especular sobre como isso aconteceu. Isso é pura especulação. Aconteceu logo depois que eu usei um cartão diferente. O rótulo do volume no cartão agora é o mesmo que o outro cartão. Por isso, suspeito que não consegui sincronizar / desmontar a outra placa quando a puxei. O leitor de cartão não notifica adequadamente o sistema quando um cartão é puxado, para que o próximo sistema gere sincronização, o sistema não sabia que eu alterei os cartões e substitui os metadados.
A primeira coisa que fiz quando isso aconteceu, é criar uma imagem usando o 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. Eu acho que uma das razões para isso é que não é destrutivo.
Como alguns dos arquivos recuperados são 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. Eu suspeito que o básico é que os arquivos são divididos em blocos, que são gravados em setores e as informações sobre como encontrar o próximo setor são gravadas de alguma forma no setor atual.
O que eu preciso para prosseguir é informações sobre como o ponteiro para o próximo setor é 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, eu 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 do arquivo.