Geralmente, não há metadados associados a cada bloco de dados em um sistema de arquivos, portanto, para implementar o que você procura, geralmente é necessário explorar todo o sistema de arquivos que usa a partição que contém um determinado arquivo. bloquear e analisar cada bloco de arquivos até encontrar o (s) bom (s).
Você também precisará definir a quais blocos você está se referindo, lógico, físico, setores, ... (512b, 1k, 4k) e lidar com casos especiais como:
- um bloco contém partes de mais de um arquivo (sistemas de arquivos usando fragmentos como o ufs)
- um bloco contém um diário, portanto, pode conter parte de um ou mais arquivos
- um bloco é compartilhado por vários arquivos (desduplicação de sistemas de arquivos)
- um bloco é compartilhado por diferentes versões de um arquivo pertencente a diferentes sistemas de arquivos (sistemas de arquivos snapshots / clone).
- ...
Em qualquer caso, você precisará implementar algoritmo de uso para diferentes sistemas de arquivos e passar algum tempo analisando seus componentes internos.