GOOGLE ADS

jueves, 21 de abril de 2022

¿Cuál es la forma más rápida de verificar si algún archivo en un árbol de directorios ha cambiado?

Actualmente estoy verificando contra una suma de verificación XOR del tiempo de archivo modificado (st_mtime de fstat) para cada archivo en el árbol. Estoy acoplando esto con la cantidad de archivos encontrados y una suma de verificación del tamaño del archivo (permitiendo desbordamientos) para estar seguro, pero estoy bastante paranoico de que esto puede conducir y conducirá a falsos positivos en los casos patológicos más extremos.

Una opción alternativa (segura) que estoy considerando es mantener un manifiesto de cada archivo por nombre y un CRC32 del contenido del archivo. Sin embargo, esta opción es bastante lenta, o más lenta de lo que me gustaría al menos para muchos archivos (digamos miles).

Entonces, la pregunta es, ¿cuáles son algunos consejos o trucos que puede tener para determinar si algún archivo ha cambiado dentro de un árbol de directorios? Me gustaría evitar una comparación byte por byte sin sacrificar demasiada confiabilidad.

Muchas gracias por tus sugerencias.


Solución del problema

Puede usar la propiedad "última modificación el" que tienen los archivos (independientemente de la plataforma).

Simplemente almacene valores históricos y verifique los valores históricos contra los valores actuales, de vez en cuando.

boost::filesystem tiene una excelente API multiplataforma para leer este valor.

EDITAR: Mire específicamente:
http://www.pdc.kth.se/training/Talks/C++/boost/libs/filesystem/doc/operations.htm#last_write_time

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...