csync (code/continuous sync) is a CLI tool written in Rust that synchronizes changes between directories in real time. It's powered by the notify crate.
To synchronize with remote directories, use csync in conjunction with sshfs. Direct SSH access support is planned for future releases.
csync is constrained by the capabilities of the notify crate. For detailed information about these limitations, please refer to the notify documentation.
This project is currently in early development. The following is a list of planed improvements:
- Potentially implement async Rust architecture
- Implement debouncing for large file write operations
- Add PollWatcher implementation for environments where necessary
- Develop direct SSH access functionality
- Optimize git index access to reduce the cost of large file copies
$ cargo buildOr if you are using Nix
$ nix buildUsage: csync [OPTIONS] <SOURCE_DIR> <TARGET_DIR>
Arguments:
<SOURCE_DIR>
<TARGET_DIR>
Options:
-i, --ignore <IGNORE> Globs to ignore, can be specified multiple times
--no-git-ignore Do not respect .gitignore and .git/info/exclude
--no-delete Do not sync deletion
--fast-initial-sync Use fast metadata-only comparison on initial sync
--skip-initial-sync Skip initial sync
--initial-sync-only Perform initial sync only and exit (don't watch for changes)
--debug Enable debug logging
--trace Enable trace logging (and debug logging)
--listen-only A debug mode that only prints events and not syncing things
-h, --help Print help
-V, --version Print version