В статье будут рассмотрены варианты работы inotify/kqueue с утилитами типа rsync.
This library provides inotify-compatible interface for applications,
that need to monitor changes happening in a filesystem. It can be useful
when porting Linux applications, which often use inotify interface.
The IN_OPEN, IN_CLOSE_WRITE and IN_CLOSE_NOWRITE events are not yet
implemented, so the relevant tests are known to fail.
Clsync recursively watches for source directory and executes external program to sync the changes. Clsync is adapted to use together with rsync. This utility is much more lightweight than competitors and supports such features as separate queue for big files, regex file filter, multi-threading.
Lsyncd watches a local directory trees event monitor interface (inotify or fsevents). It aggregates and combines events for a few seconds and then spawns one (or more) process(es) to synchronize the changes. By default this is rsync. Lsyncd is thus a light-weight live mirror solution that is comparatively easy to install not requiring new filesystems or block devices and does not hamper local filesystem performance.
The inosync daemon leverages the inotify service available in recent linux kernels to monitor and synchronize changes within directories to remote nodes.
The inotify cron daemon (incrond) is a daemon which monitors filesystem events and executes commands defined in system and user tables. It uses is generally similar to cron(8).
The wait_on command allows shell scripts to access the facilities provided
by kqueue(3) on FreeBSD.
The wait_on command waits for something to happen to the files or
directories given as arguments and then exits. For example, a script can
sleep until files have been added to a directory or data is appended to a file.