LuminS

Luminous Synchronize

A fast and reliable alternative to rsync for synchronizing local files

Build Status Code Coverage Crate Docs

Demo ## Features
100% Rust
Powered by the Rayon library for high parallel perfomance
Supported on Unix-based platforms
Extremely fast at synchronizing directories with large quantities of files
Multithreaded copy, remove, and sync
A progress bar using indicatif
## Usage ```bash USAGE: lms [SUBCOMMAND] FLAGS: -h, --help Prints help information -V, --version Prints version information SUBCOMMANDS: cp Multithreaded directory copy help Prints this message or the help of the given subcommand(s) rm Multithreaded directory remove sync Multithreaded directory synchronization [aliases: s] ``` #### Sync ```bash USAGE: lms sync [FLAGS] FLAGS: -h, --help Prints help information -n, --nodelete Do not delete any destination files -s, --secure Use a cryptographic hash function for hashing similar files -S, --sequential Copy files sequentially instead of in parallel -V, --version Prints version information -v, --verbose Verbose outputs ARGS: Source directory Destination directory ``` #### Copy ```bash USAGE: lms cp [FLAGS] FLAGS: -h, --help Prints help information -S, --sequential Copy files sequentially instead of in parallel -V, --version Prints version information -v, --verbose Verbose outputs ARGS: Source directory Destination directory ``` #### Remove ```bash USAGE: lms rm [FLAGS] ... FLAGS: -h, --help Prints help information -S, --sequential Delete files sequentially instead of in parallel -V, --version Prints version information -v, --verbose Verbose outputs ARGS: Target directory ``` ## Benchmarks Using [hyperfine](https://github.com/sharkdp/hyperfine) on an Intel i7-8550U with the following 2 test folders, | Directory | Directory Size | Number of Files | | --------- | -------------- | --------------- | | 1 | 88MB | 7262 | | 2 | 105MB | 252 | | Command | Directory | Time | | ---------------------- | --------------- | ----------------------------- | | **lms sync** | 1 | **179.1 ms** ± 5.1 ms | | rsync -r --delete | 1 | 717.8 ms ± 41.1 ms | | **lms cp** | 1 | **117.3 ms** ± 3.6 ms | | cp -r | 1 | 283.4 ms ± 13.2 ms | | **lms rm** | 1 | **147.6 ms** ± 8.6 ms | | rm -rf | 1 | 180.7 ms ± 4.3 ms | | ---------------------- | --------------- | ----------------------------- | | **lms sync** | 2 | **101.2 ms** ± 24.8 ms | | rsync -r --delete | 2 | 442.2 ms ± 19.6 ms | | **lms cp** | 2 | **33.8 ms** ± 2.8 ms | | cp -r | 2 | 143.5 ms ± 18.8 ms | | **lms rm** | 2 | **10.0 ms** ± 2.8 ms | | rm -rf | 2 | 27.4 ms ± 0.8 ms | Of course, these benchmarks can be highly dependent on CPU and IO devices. ## Build First [install](https://www.rust-lang.org/tools/install) Rust (recommended using rustup). ```zsh $ git clone https://github.com/wchang22/LuminS.git $ cd LuminS $ cargo build --release ``` ## Install Using cargo, ```bash $ cargo install lms ``` ## Contributions Suggestions, issues, and pull requests are welcome!