[GTALUG] Watching a network folder: is there a smart way of doing this?

William Park opengeometry at yahoo.ca
Fri Feb 17 21:44:53 EST 2017


Are you copying files over, or are you moving them?
    1. Moving them is easiest.  Just move whatever you find, and use a
    sensible target filename.
    2. Copying them is harder.  Filename, timestamp, size, md5sum can be
    used to decide if you already have them.
-- 
William

On Fri, Feb 17, 2017 at 03:41:39PM -0500, Stewart C. Russell via talk wrote:
> I need to watch a folder on a network share (a scanner) and see when new
> files are created. There are a couple of special things about this location:
> 
> * It's over CIFS. There's nothing I can do about that. I think that
> means I can't use Inotify.
> 
> * It doesn't have an accurate clock for timestamping. There's nothing I
> can do about that, either.
> 
> * If the share is being written to by the device, it effectively
> disappears: stat() complains loudly.
> 
> * It reuses the lowest available file name of the form
> ???EPSON%03d.(PDF|JPG)???, so synching the share to a sensible filesystem
> might overwrite files accidentally.
> 
> * I don't need to watch it very often; a few times per hour would be fine.
> 
> I tried using Perl's File::ChangeNotify::Watcher, which is supposed to
> pick the smartest method available. Unfortunately, this seems to be
> calling stat() every two seconds, resulting in:
> 
> 1. Messages (one per existing file on the share) saying that the scanner
> has deleted them. This happens when someone starts scanning
> 
> 2. An error message from stat() every two seconds while the device is
> scanning
> 
> 3. Messages saying that all of the old files (plus the new one) have
> been created.
> 
> I was naïvely hoping for a mechanism that would report ???Hey, you have a
> new file called $filename??? but that seems to have been a pipedream. What
> do People Who Actually Know What They're Doing use, please?
> 
> cheers,
> 
>  Stewart
> 
> ---
> Talk Mailing List
> talk at gtalug.org
> https://gtalug.org/mailman/listinfo/talk


More information about the talk mailing list