SharzyL/csync

CLI real-time directory dynchronization tool

★ 0Forks 0RustGitHub ↗Compare

README

csync: Real-Time Directory Synchronization Tool

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

Build

$ cargo build

Or if you are using Nix

$ nix build

Usage

Usage: 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

Contributors

SharzyL

Issues