2009-03-16 12 views
3

Donc, je suis au milieu du développement de la couche d'abstraction du système de fichiers basé sur le Web. Tout comme le navigateur de fichiers, sauf qu'il a des fonctionnalités supplémentaires comme des autorisations bizarres, etc.Somme de contrôle du répertoire avec python?

J'aimerais que les utilisateurs soient informés des changements de répertoire. Ainsi, lorsque quelqu'un télécharge un nouveau fichier via FTP, certains utilisateurs doivent recevoir un message approprié. Il n'est pas nécessaire que le message soit détaillé, je n'ai pas vraiment besoin de montrer la ressource exacte modifiée. Le nom du répertoire parent devrait suffire.

Quelle approche préconisez-vous?

Répondre

2

Si votre serveur est Linux, vous pouvez le faire avec quelque chose comme inotify

Si les seules mises à jour proviennent de FTP, puis une autre solution que je l'ai utilisé dans le passé est d'écrire un module complémentaire à ProFTPD qui effectue la "notification" une fois le téléchargement terminé.

1

Voir cette question: How to quickly find added/removed files?

Mais si vous pouvez contrôler le téléchargement en quelque sorte (à savoir utiliser le protocole HTTP POST au lieu de FTP), vous pouvez simplement envoyer une notification après le téléchargement est terminé. Cela a l'avantage supplémentaire de s'assurer que les utilisateurs ne verront jamais un fichier partiel.

+0

Je préfère FTP, car les fichiers stockés il y a> 200 Mo chacun. – ohnoes

+0

+1: Écrivez la transaction de téléchargement. Écrivez votre propre client FTP qui ajoute une notification. –

+0

S.Lott: on dirait de réinventer la roue. D'ailleurs, mes utilisateurs me crucifier si je leur ai demandé d'utiliser mon propre client;) – ohnoes

0

Une approche simple serait de surveiller/vérifier la date de dernière modification du répertoire de travail (en utilisant os.stat() par exemple).

Chaque fois qu'un fichier dans un répertoire est modifié, le répertoire de travail (le répertoire que le fichier est) dernière modification date de modification ainsi.

Au moins cela fonctionne sur les systèmes de fichiers sur lesquels je travaille (UFS, ext3). Je ne suis pas sûr si tous les systèmes de fichiers le font de cette façon.