Re: Watching a directory for change
by particle (Vicar) on Jun 13, 2002 at 12:45 UTC
|
you're looking for the Win32::ChangeNotify module. from the doc:
NAME
Win32::ChangeNotify - Monitor events related to files and directories
--------------------------------------------------------------------------------
SYNOPSIS
require Win32::ChangeNotify;
$notify = Win32::ChangeNotify->new($Path,$WatchSubTree,$Events);
$notify->wait or warn "Something failed: $!\n";
# There has been a change.
--------------------------------------------------------------------------------
DESCRIPTION
This module allows the user to use a Win32 change notification event object from
Perl. This allows the Perl program to monitor events relating to files and
directory trees.
The wait method and wait_all & wait_any functions are inherited from the
"Win32::IPC" module.
~Particle *accelerates*
| [reply] [d/l] |
(wil) Re: Watching a driectory for change
by wil (Priest) on Jun 13, 2002 at 12:50 UTC
|
How are you doing this at the moment? A code sample would help. Are you checking the directory manually to see if anything has changed? Or are you using a sript to poll the directory and compare it's contents with a cached list?
It would also help to know how files are being 'put' in that directory? Do they get put in there by users, or are they auto-generated by scripts? If they're generated then maybe a quick hack to the generator-script could issue you with a notification.
There is one module that I know of, available at CPAN, that might be of use to you here. Look into the Win32::ChangeNotify module which allows you to monitor events relating to files and directory trees.
Try running it with the FILE_NAME flag set to only monitor creating/deleting/renaming of files in a given directory.
Hope this helps
- wil | [reply] |
Re: Watching a driectory for change
by Snuggle (Friar) on Jun 13, 2002 at 14:04 UTC
|
This is an interesting problem, and some people have already mentioned Win32::ChangeModify. I am wondering if there is a module for *nix that does the same thing, or is there a way to query the operating system to have the same effect?
Anyway, no drug, not even alcohol, causes the fundamental ills of society.
If we're looking for the source of our troubles, we shouldn't test people
for drugs, we should test them for stupidity, ignorance, greed and love of
power.
--P. J. O'Rourke | [reply] |
|
I just noticed last night that there's a daemon in RH 7.3 that does file change notifications called sgi_fam. I haven't looked in to it, just saw it when I was cleaning up an install.
Spring: Forces, Coiled Again!
| [reply] |
|
There's a kqueue facility in FreeBSD which could be used for such a task. Unfortunately, I see only a python interface wrapper for it :(
| [reply] |
Re: Watching a driectory for change
by Anonymous Monk on Jun 13, 2002 at 13:56 UTC
|
Thanks a lot guys, changenotify is great.
How I was doing it at the moment was running a script that would check the directory to see if there was any content every 5 minutes and then take the files. The files were being put there by ftp.
Thanks again, I think I am going to play with changenotify for a while
| [reply] |
|
| [reply] [d/l] |
Re: Watching a driectory for change
by ismail (Acolyte) on Jun 13, 2002 at 18:13 UTC
|
Rolling your own is a nice exercise and all, but if you're on a production machine it's best to leave it to the pro's. Check out tripwire.org, which is an open-source project dedicated to this very task (with a versionable file system for backing up a file when it does become modified, etc). At the very least, it will give you good ideas on the various cases you will encounter. Good luck. | [reply] |