Current version: 0.8.0 (31 December 2025) [src]
continual-sync is a tool to keep a directory
synchronised with its mirror. It uses the inotify change notification
mechanism to efficiently trigger calls to rsync, only including the
relevant paths in each call.
It can be used to mirror directories between machines automatically, for instance backing up your local files to an off-site file server, with minimal overhead.
The continual-sync tool is intended to be used in the
background - set up once and forgotten about. For example, it can be used
to back up hundreds of Linux desktops to a central server with no user
interaction, and with changes appearing on the central server within minutes
of the originals being changed on the desktop.
The package also includes the "watchdir" utility, which writes
change notification files when the contents of a directory are altered.
Note that this software will only run on Linux.
This software is distributed under the terms of the GNU General Public License version 3 or later.
- Source code: continual-sync-0.8.0.tar.gz [signature]
- Manual for continual-sync
- Manual for continual-sync config
- Example config file (introductory)
- Example config file (large)
- Manual for watchdir
- Zabbix monitoring template (JSON)
- Zabbix monitoring template (XML)
- Checkmk monitoring script
- Git repository (at Codeberg)
- Issue tracker (at Codeberg)
Releases are signed with the signing key.
How to verify the signature of a download
Each release has an associated signature file. This is generated from the source archive using the private counterpart of the public signing key. Checking the signature using the public key allows you to confirm that the archive was signed by the author.
# Download the release's source archive curl -O https://ivarch.com/s/continual-sync-0.8.0.tar.gz # Download the release's signature file curl -O https://ivarch.com/s/ continual-sync-0.8.0.tar.gz.txt # Use GnuPG to verify the signature gpg --verify continual-sync-0.8.0.tar.gz.txt continual-sync-0.8.0.tar.gz
If you have installed the public signing key in your keyring, you will see confirmation like this:
gpg: Signature made Wed 31 Dec 2025 11:20:58 GMT gpg: using RSA key D8FF44A79CC8A61EF694FA7EB883E01314DA8E84 gpg: issuer "andrew.wood@ ivarch.com" gpg: Good signature from "Andrew Wood <andrew.wood @ ivarch.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: D8FF 44A7 9CC8 A61E F694 FA7E B883 E013 14DA 8E84
To install continual-sync system-wide, follow these steps:
curl -O https://ivarch.com/s/continual-sync-0.8.0.tar.gz tar xzf continual-sync-0.8.0.tar.gz cd continual-sync-0.8.0 sh ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var make sudo make install
Comments, bug reports, and patches can be sent using the Issue tracker, or through the Contact Form.
News
0.8.0 - 31 December 2025
- feature: new watchdir “–no-file-tracking” option for large directories, with associated continual-sync parameter, “track files” (#18)
- feature: new continual-sync parameters “full sync timeout” and “partial sync timeout” (#10)
- feature: new continual-sync parameter “section list file” to write a JSON list of active sections, for monitoring (#8)
- feature: extend the time format in status files to include the epoch time
- feature: provide a monitoring script to use with Checkmk
- feature: provide a monitoring template to use with Zabbix
- fix: mitigate performance degradation when handling large directories
- fix: avoid potential array overflow when change list entries are deferred
- fix: mark a directory as changed if a subdirectory is removed from it
- fix: correct the file mode of the SysVinit script on installation
- fix: stop truncating continual-sync’s process titles
- fix: reflect last full and partial sync times from marker files, in the status file
- fix: use null-delimited change files within continual-sync (#11)
- cleanup: replace all fixed-size line buffers with dynamic allocation
- cleanup: consolidate repeated code
- cleanup: reduce memory footprint
- cleanup: address many warnings from splint and flawfinder
0.5.0 - 9 September 2025
- feature: allow watchdir to watch more than one top-level directory at a time (#16)
- feature: new watchdir “–output-dir” option (#16)
- feature: new watchdir “–absolute” option to output changed paths as absolute rather than relative (#16)
- i18n: added internationalisation support (#6)
- i18n: German translations supplied by Atalanttore (#17)
- fix: prevent spurious warnings when updating continual-sync status files
- fix: delay change checks slightly for larger files (#2)
- cleanup: add basic continual-sync tests to
“
make check” - docs: new docs/ACKNOWLEDGEMENTS.md file
0.4.0 - 25 May 2025
- feature: new watchdir “–suffix” option to give change files a predictable suffix (#12)
- feature: new watchdir “–only-files” and “–only-directories” options to narrow the scope (#13)
- feature: new watchdir “–null” option to write null-delimited change files (#14)
- fix: the continual-sync startup script and systemd unit will now create the run-time state directory (#1)
- fix: watchdir will now exit when the watched directory is deleted
- fix: corrected a compilation failure on non-glibc systems like Alpine Linux
- cleanup: corrected installation behaviour when a different prefix is being used
- cleanup: removed redundant EOF markers from source files
- cleanup: new “
make analyse” to run “splint” and “flawfinder” on all source files (#4) - cleanup: addressed many of the warnings from
“
splint” - cleanup: added first tests to the new
“
make check” test suite (#5) - docs: renamed the documentation directory
- docs: removed redundant documents
- docs: standardised the formatting of the manuals
0.1.0 - 20 August 2023
- Refactored package structure to better conform to GNU standards
- Updated
--helpand--versionoutput to conform to GNU standards - Switched license to GPLv3+
- Removed direct support for Red Hat Enterprise Linux
- Added systemd unit and sysvinit script
- Moved
continual-syncto system binary directory - Create the parent directories of log, status, and PID files automatically
- Exit and restart a subprocess if its exclusions file disappears due to temporary directory cleanup
0.0.6 - 4 September 2021
- Added an “ignore vanished files” option
- Updated the init script to create /var/run/continual-sync on startup
0.0.5 - 12 December 2014
- repackaged as a free software project with permission from my employer
0.0.4 - 12 August 2014
- added “working directory” field to status file
- check working directory still exists after every sync attempt, as well as when a watcher exits
0.0.3 - 7 August 2014
- added “current action” field to status file
0.0.2 - 6 August 2014
- added “temporary directory” parameter
- set default $PATH if one is not set in the environment
- record rsync errors in log file
- added “status file” parameter
0.0.1 - 2 August 2014
- initial release