2009-03-16 5 views
1

J'ai besoin d'écrire un composant de sauvegarde simple pour synchroniser un dossier et ses sous-dossiers sur un serveur. Pour la sauvegarde incrémentielle, je veux seulement télécharger les fichiers modifiés. Quel serait le meilleur moyen de suivre les changements dans le système de fichiers? Certains logiciels existants comme Tortoisesvn et Office Groove ont une telle capacité à détecter les changements de fichiers. Je me demande quelle est la meilleure façon de mettre en œuvre une chose similaire.Synchronisation du système de fichiers, comment détecter si un fichier a changé?

Merci!

+0

Environnement de programmation? –

+1

Quand vous dites "détecter les changements", voulez-vous dire déterminer si un fichier diffère de la sauvegarde, ou voulez-vous réagir au moment où le fichier est en cours de modification? –

Répondre

2

Votre question est un peu ambiguë:

Si vous essayez de passer par tous vos fichiers et de déterminer quels sont ceux qui doivent être envoyées au serveur de sauvegarde:

La méthode la plus simple est de comparer les temps de modification; Si le fichier de votre système local a été modifié après celui de votre système de sauvegarde, il a changé et la sauvegarde doit être mise à jour. (Il est possible de modifier les temps modifiés d'un fichier en utilisant quelque chose comme touch, mais pour le cas simple, vous n'avez pas besoin probablement inquiéter à ce sujet)

Une méthode plus complexe (et coûteux en calcul) serait de calculer les codes de hachage des fichiers et les comparer; Si le hachage diffère, vous devez effectuer une sauvegarde.

Si vous essayez de détecter le moment qu'un fichier est modifié:

Vous pouvez utiliser un FileSystemWatcher (en C#/Windows), ou l'équivalent pour votre langue/OS.

1

Si vous utilisez Mac OS X, il y a une chose appelée FSEvents. Il doit y avoir un service dans Windows pour ça aussi.

Questions connexes