conserver toutes les versions d'un répertoire

3

Je cherche un outil qui puisse me donner une chronologie de toutes les modifications qui ont été appliquées aux fichiers d'un répertoire donné, ainsi que le contenu de tous les fichiers à un moment donné.

Pour autant que je sache, cela ne peut pas être géré par une solution de sauvegarde, car toutes vérifient régulièrement, mais pas en permanence si une modification a été appliquée. Pour mon but, il est important que je saisisse chaque changement, pas seulement l'état après un intervalle donné.

Le répertoire que je dois surveiller sera relativement petit, moins de 1 Mo et 200 fichiers. L'activité d'écriture sera étendue, mais il peut y avoir de courtes rafales avec quelques écritures par seconde. Et, juste pour préciser, si un fichier change deux fois en une seconde, j'ai besoin des deux versions.

En outre, l'accès en écriture aux fichiers est effectué selon un modèle "ouverture-écriture-fermeture", de sorte qu'il n'y a pas de verrous de fichiers durables à gérer.

La performance n'est pas une préoccupation. Même si le temps d'écriture double, tout ira bien.

Le système d'exploitation est Windows 7 ou Mac OS 10.6. Le processus lui-même s'exécute sous Windows mais l'écriture sur un partage sur le Mac n'est pas un problème.

Le processus d'écriture n'est pas vraiment un processus unique. Plusieurs programmes sont impliqués et tous peuvent appliquer des modifications.

Sebastian Meine
la source
Quel est le processus d'écriture de ces fichiers?
dawud
3
Vous pouvez avoir des événements ReadDirectoryChangesW déclenchant des instantanés de disques , puis copier les fichiers modifiés. Mais je ne sais pas s’il y aurait des conditions de course avec vos rafales d’écritures. Changer de journal peut aussi être intéressant.
Paulo Almeida
@PauloAlmeida, merci. Les journaux des modifications sont utiles pour détecter une modification depuis votre dernière vérification, mais ne garantissent pas que toutes les modifications sont interceptées. ReadDirectoryChangesW ainsi que FindFirstChangeNotification semblent prometteurs au début, mais ils réagissent à une écriture réelle sur disque plutôt qu’à une modification de fichier qui pourrait être une écriture en cache uniquement. Donc, je suppose que j'ai besoin de quelque chose entre le disque et l'application, comme un pilote de filtre. J'espérais avoir une application existante quelque part. Alternativement, un bon tutoriel sur les pilotes de filtres fonctionnerait aussi.
Sebastian Meine
J'ai remarqué le problème de cache avec les événements WRITE de ReadDirectoryChangesW, mais il existe FILE_NOTIFY_CHANGE_LAST_ACCESS, qui pourrait éviter cela.
Paulo Almeida

Réponses: