Como encontrar rapidamente arquivos adicionados / removidos?

Estou escrevendo um pequeno programa que cria um índice de todos os arquivos nos meus diretórios. Basicamente, itera sobre cada arquivo no disco e o armazena em um banco de dados pesquisável, bem como a localização do Unix. O problema é que essa geração de índice é bastante lenta, pois tenho cerca de um milhão de arquivos.

Depois de gerar um índice, existe uma maneira rápida de descobrir quais arquivos foram adicionados ou removidos no disco desde a última execução?

EDITAR: Não quero monitorar os eventos do sistema de arquivos. Eu acho que o risco é alto demais para ficar fora de sincronia, eu preferiria ter algo como uma rápida varredura que descobre rapidamente onde os arquivos foram adicionados / removidos. Talvez com a data da última modificação do diretório ou algo assim?

Um Pouco de Referência

Acabei de fazer uma pequena referência. Corrida

dir /b /s M:\tests\  >c:\out.txt

Leva 0,9 segundos e me fornece todas as informações necessárias. Quando eu uso uma implementação Java (muito parecido com isto), leva cerca de 4,5 segundos. Alguma idéia de como melhorar pelo menos essa abordagem de força bruta?

Mensagens relacionadas:Como ver se um subarquivo de um diretório foi alterado

questionAnswers(10)

yourAnswerToTheQuestion