¿Cómo encontrar rápidamente archivos agregados / eliminados?

Estoy escribiendo un pequeño programa que crea un índice de todos los archivos en mis directorios. Básicamente, itera sobre cada archivo en el disco y lo almacena en una base de datos de búsqueda, al igual que la ubicación de Unix. El problema es que la generación de índices es bastante lenta ya que tengo alrededor de un millón de archivos.

Una vez que he generado un índice, ¿hay una forma rápida de averiguar qué archivos se han agregado o eliminado en el disco desde la última ejecución?

EDITAR: No quiero monitorear los eventos del sistema de archivos. Creo que el riesgo es demasiado alto para salir de la sincronización, preferiría tener algo como un escaneo rápido que encuentre rápidamente dónde se agregaron / eliminaron los archivos. ¿Tal vez con la última fecha de modificación del directorio o algo así?

Un pequeño punto de referencia

Acabo de hacer un pequeño punto de referencia. Corriendo

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

Toma 0.9 segundos y me da toda la información que necesito. Cuando uso una implementación de Java (así mucho), tarda unos 4,5 segundos. ¿Alguna idea de cómo mejorar al menos este enfoque de fuerza bruta?

Artículos Relacionados:Cómo ver si un subarchivo de un directorio ha cambiado

Respuestas a la pregunta(10)

Su respuesta a la pregunta