Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

surveillance de fichier/répertoire

9 réponses
Avatar
RV
Bonjour

Je voudrais savoir si quelqu'un aurait un module =E0 me conseiller pour
surveiller des fichiers et des r=E9pertoires et cr=E9er des =E9v=E8nements
associ=E9s =E0 des fonctions en cas d'=E9criture de lecture, cr=E9ation,
suppression ...

J'en ai essay=E9 plusieurs, dont Event, mais il fonctionne bizarrement,
il me g=E9n=E8re des =E9venenents tout le temps...

si quelqu'un =E0 un module qui fonctionne bien et des exemple associ=E9s,
=E7a serait super

merci

Herv=E9

9 réponses

Avatar
Paul Gaborit
À (at) 13 Apr 2007 01:03:32 -0700,
"RV" écrivait (wrote):
Je voudrais savoir si quelqu'un aurait un module à me conseiller pour
surveiller des fichiers et des répertoires et créer des évènements
associés à des fonctions en cas d'écriture de lecture, création,
suppression ...


A priori, jusqu'à récemment, la plupart des OS ne proposaient pas ce
genre de services. Il fallait donc le faire 'à la main' en faisant de
la surveillance active (on attend quelques millisecondes et on regarde
si quelque chose à changer dans le répertoire puis on réattend,
etc.). C'était gourmand en ressources (c'est du polling).

Depuis quelques temps, les OS évoluent et on trouve des services
intégrés dans Linux, Windows, *BSD, MacOS X et autres... Mais ces
services ne fonctionnent pas tous sur le même principe et n'ont pas
(encore) d'interface standard. Je ne crois pas qu'il y ait de norme
POSIX à ce sujet.

Par dessus, on trouve des trucs comme FAM, qui propose un service
générique pour toutes les applications qui les utilisent et qui se
débrouillent avec ce que le système propose réellement (ou non).

Reste le problème de la surveillance (efficace) des filesystem réseaux
(NFS, Samba, etc.)...

Tout ça pour dire que ce n'est pas un problème simple surtout si on
cherche une solution portable sur toute plateforme et tout filesystem.

J'en ai essayé plusieurs, dont Event, mais il fonctionne bizarrement,
il me génère des évenenents tout le temps...


Je n'ai pas l'impression que Event sache déjà faire cela.

si quelqu'un à un module qui fonctionne bien et des exemple associés,
ça serait super


Je n'en connais pas de générique... mais ça existe peut-être.

Mais il est possible de prendre le problème à l'envers : on trouve sur
le système le moyen de surveiller un répertoire et ce service appelle
un script Perl à chaque événement...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
RV
Mais il est possible de prendre le problème à l'envers : on trouve sur
le système le moyen de surveiller un répertoire et ce service appelle
un script Perl à chaque événement...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Merci pour ces réponses répondant clairement qu'il n'y pas de solution
officielles :o)

Par contre, quel genre de sytèmes sont disponible sur certains OS. (Je
suis sous Linux/Fedora mais interopérabilité entre distribution Linux
souhaitée)
Je sais qu'il y a Crontab, mais ça, je ne crois pas que ce soit fait
pour ces genre de chose, si ???

Avatar
Paul Gaborit
À (at) 13 Apr 2007 06:49:18 -0700,
"RV" écrivait (wrote):
Par contre, quel genre de sytèmes sont disponible sur certains OS. (Je
suis sous Linux/Fedora mais interopérabilité entre distribution Linux
souhaitée)


Pour Linux, on trouve inotify :

<http://www-128.ibm.com/developerworks/linux/library/l-inotify.html>
<http://www.die.net/doc/linux/man/man7/inotify.7.html>

Et une module Perl qui s'appelle Linux::Lnotify (mais il n'a pas l'air
très à jour...).

À tester (sur le Fedora 5 que j'ai sous la main, ça ne semble pas
installé et pourtant c'est un noyau 2.6.20...).

Je sais qu'il y a Crontab, mais ça, je ne crois pas que ce soit fait
pour ces genre de chose, si ???


Effectivement, ça n'a rien à voir. ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Mark Clements
RV wrote:
Bonjour

Je voudrais savoir si quelqu'un aurait un module à me conseiller pour
surveiller des fichiers et des répertoires et créer des évènements
associés à des fonctions en cas d'écriture de lecture, création,
suppression ...

J'en ai essayé plusieurs, dont Event, mais il fonctionne bizarrement,
il me génère des évenenents tout le temps...

si quelqu'un à un module qui fonctionne bien et des exemple associés,
ça serait super



FAM?

http://en.wikipedia.org/wiki/File_alteration_monitor
http://oss.sgi.com/projects/fam/

Il s'utilise pas GNOME, par exemple.

Mark

Avatar
Mark Clements
Mark Clements wrote:
RV wrote:
Bonjour

Je voudrais savoir si quelqu'un aurait un module à me conseiller pour
surveiller des fichiers et des répertoires et créer des évènements
associés à des fonctions en cas d'écriture de lecture, création,
suppression ...

J'en ai essayé plusieurs, dont Event, mais il fonctionne bizarrement,
il me génère des évenenents tout le temps...

si quelqu'un à un module qui fonctionne bien et des exemple associés,
ça serait super



FAM?

http://en.wikipedia.org/wiki/File_alteration_monitor
http://oss.sgi.com/projects/fam/

Il s'utilise pas GNOME, par exemple.


Un solution possible qui est plutôt perl :)

http://search.cpan.org/~andya/File-Monitor-v0.0.5/lib/File/Monitor.pm

On pourrait faire quelque chose avec ce module et soit POE ou
Parallel::ForkManager.

Mark


Avatar
Paul Gaborit
À (at) Fri, 13 Apr 2007 19:01:03 +0200,
Mark Clements écrivait (wrote):
FAM?
http://en.wikipedia.org/wiki/File_alteration_monitor
http://oss.sgi.com/projects/fam/
Il s'utilise pas GNOME, par exemple.


Un solution possible qui est plutôt perl :)

http://search.cpan.org/~andya/File-Monitor-v0.0.5/lib/File/Monitor.pm

On pourrait faire quelque chose avec ce module et soit POE ou
Parallel::ForkManager.


FAM est bien (car il permet de ne pas faire de polling) mais je ne
connais pas de module Perl qui l'exploite.

Quant à File::Monitor, le TODO est explicite :

Things to do:

* Use native file monitoring interface on platforms where it's
available.

* Implement a "don't scan more frequently that every X seconds"
functionality.

* Directory scanning is hideously inefficient. For directories
with the 'files' flag set we only need to rescan the directory
if stat shows that it has been modified.

* Investigate whether changes to the monitored directory are
reported correctly under Windows.

* Implement more efficient polling in the degenerate case where
you only want to know if any of the monitored files has changed.
That's tricky because the current interface assumes that all the
File::Monitor::Objects are updated after each call to scan().

Ce module n'est pas encore mûr ! ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
Jogo
Sur fr.comp.lang.perl, Paul Gaborit disait :

Pour Linux, on trouve inotify :
<http://www-128.ibm.com/developerworks/linux/library/l-inotify.html>


Ces informations ne me semblent valables que pour les noyaux
antérieurs au 2.6.13. Depuis, le patch est passé dans vanilla.

Et un module Perl qui s'appelle Linux::Lnotify (mais il n'a pas l'air
très à jour...).

À tester (sur le Fedora 5 que j'ai sous la main, ça ne semble pas
installé et pourtant c'est un noyau 2.6.20...).


Il faut vérifier les options INOTIFY et INOTIFY_USER. Elles sont actives
par default, mais peut-être que Fedora n'en fait qu'à sa tête.

Chez moi, avec le même noyau, le module Linux::Inotify2 fonctionne sans
aucun soucis, alors qu'il n'y a pas de /dev/inotify.

--
Ne pas trahir, c'est cela la fidélité : je te jure, non de t'aimer
toujours, mais de demeurer fidèle toujours à cet amour que nous vivons,
de ne pas trahir le passé en le reniant

Avatar
Paul Gaborit
À (at) Sun, 15 Apr 2007 18:20:46 +0200,
Jogo écrivait (wrote):
Sur fr.comp.lang.perl, Paul Gaborit disait :

Pour Linux, on trouve inotify :
<http://www-128.ibm.com/developerworks/linux/library/l-inotify.html>


Ces informations ne me semblent valables que pour les noyaux
antérieurs au 2.6.13. Depuis, le patch est passé dans vanilla.


C'est ce qui est expliqué (l'intégration dans le noyau depuis la
version 2.6.13).

Et un module Perl qui s'appelle Linux::Lnotify (mais il n'a pas l'air
très à jour...).

À tester (sur le Fedora 5 que j'ai sous la main, ça ne semble pas
installé et pourtant c'est un noyau 2.6.20...).


Il faut vérifier les options INOTIFY et INOTIFY_USER. Elles sont actives
par default, mais peut-être que Fedora n'en fait qu'à sa tête.

Chez moi, avec le même noyau, le module Linux::Inotify2 fonctionne sans
aucun soucis, alors qu'il n'y a pas de /dev/inotify.


Parfait. Dommage que les deux auteurs n'aient pas pris le temps de
fusionner leur code pour conserver un seul nom de module...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
scoopie
RV a écrit le 13/04/2007 à 10h03 :
Bonjour

Je voudrais savoir si quelqu'un aurait un module à me conseiller pour
surveiller des fichiers et des répertoires et créer des évènements
associés à des fonctions en cas d'écriture de lecture, création,
suppression ...

J'en ai essayé plusieurs, dont Event, mais il fonctionne bizarrement,
il me génère des évenenents tout le temps...

si quelqu'un à un module qui fonctionne bien et des exemple associés,
ça serait super

merci

Hervé


Bonjour,

Regarder les solutions de Varonis de plus pres. C'est le leader absolut dans ce domain. Ils savent identifier tous les acces aux repertoires et fichiers (acces, modifications, copies, changements etc). Apres avoir assiste a une presentation, j'ai teste la solution qui marche comme une merveille!
Je vous conseille...