Lib for 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

Copy

```rust use lms_lib::{core, parse::Flag}; use std::path::Path;

main () { let src = Path::new("/foo/bar/hello.txt"); let dest = Path::new("/bar/foo/hi.txt"); core::copy(&src, &dest, Flag::empty())?; } ```

Sync

```rust use lms_lib::{core, parse::Flag}; use std::path::Path;

main () { let src = Path::new("/foo/bar/hello.txt"); let dest = Path::new("/bar/foo/hi.txt"); core::synchronize(&src, &dest, Flag::empty())?; } ```

Remove

```rust use lms_lib::{core, parse::Flag}; use std::path::Path;

main () { let target = Path::new("/bar/foo/hi.txt"); core::remove(&target, Flag::empty())?; } ```

Benchmarks

Using 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.

Contributions

Suggestions, issues, and pull requests are welcome!