PIrsyncD - Python Inotify Rsync Daemon
Published by ebal on Monday, 13 July 2009
This is the home page of pirsyncd.
pirsyncd stands for: Python Inotify Rsync Daemon.
Created by Evaggelos Balaskas <ebalaskas AT ebalaskas DOT gr>
This is an attempt of writing a daemon to watch a directory for kernel’s inotify events and then execute an rsync command to synchronize two different directories (local or remote). This is a poor man’s mirroring or an alternative (not so) real data replication mechanism and it is based on Pyinotify.
Always the latest version is here: pirsyncd
Latest version is 20110412
Current md5sum & sha1sum:
or via mercurial, pirsyncd on bitbucket
hg clone https://firstname.lastname@example.org/ebal/pirsyncd/
Some of the features of the pirsyncd:
- There is no need of installation!
- Run as a Daemon
- Can run as a Daemon in foreground
- Simple Configuration, you only have to configure your source and destination directories
- Configuration Check at the begging
- Ability to check and stop the daemon
- Syntax help with ––help
- For every parameter there is a usage examples with ––examples
- Support multiple running instances
- Mirroring to a remote (destination) server (needs password-less connection) through ssh connection
- Mirroring to a remote (destination) server (needs rsync password-file) through rsync connection
- Error handling via exceptions
- A customized delay for mirroring directories (dont rsync asap when an event is trigged)
- Gets arguments from command line - there is no need of hack the code.
- Synchronization at start (mirroring via rsync) - first run
- Definition of rsync version from command line
- Logging functionality of rsync process
- Partial rsync functionality
- Append rsync functionality
- Functionality to exclude files larger than MAX-SIZE or smaller than MIN-SIZE
- Debugging pyinotify events
- Debugging rsync command
- Autolearning new subdirectories
- Rsync & Pyinotify exclude pattern
- Resolving duplicates inode events for multiple files/events
- You can rsync every n (NUMBER) inode events (simple delay method)
- Supports python3 with pirsyncd.Py3k
- Pyinotify version 0.9.1 (20110405)
- Clean code and python code styling using pylint
- 7.58/10 (previous run: 7.50/10) with pylint !
- Lines of code (has a lot of comments !) and it is written on KISS principle
egrep -vc '#|^$|"""' pirsyncd 427
pirsyncd monitors for these inotify events:
PS: this is my very first python script, i would appreciate any comments
For people who can read greek, there is a FAQ about pirsyncd: FAQ – pirsyncd
Here is a mini presentation or inotify,pyinotify and pirsyncd
You can find pirsyncd on: