lms

Crates.iolms
lib.rslms
version0.4.0
sourcesrc
created_at2019-02-24 07:14:13.335295
updated_at2020-06-28 23:59:12.066146
descriptionA fast and reliable alternative to rsync for synchronizing local files
homepage
repositoryhttps://github.com/wchang22/lumins
max_upload_size
id116855
size184,157
Eric Mikulin (ErisMik)

documentation

README

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

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

USAGE:
    lms sync [FLAGS] <SOURCE> <DESTINATION>

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>         Source directory
    <DESTINATION>    Destination directory

Copy

USAGE:
    lms cp [FLAGS] <SOURCE> <DESTINATION>

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>         Source directory
    <DESTINATION>    Destination directory

Remove

USAGE:
    lms rm [FLAGS] <TARGET>...

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>    Target directory

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.

Build

First install Rust (recommended using rustup).

$ git clone https://github.com/wchang22/LuminS.git
$ cd LuminS
$ cargo build --release

Install

Using cargo,

$ cargo install lms

Contributions

Suggestions, issues, and pull requests are welcome!

Commit count: 78

cargo fmt