Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wchang22/LuminS
A fast and reliable alternative to rsync for synchronizing local files written in Rust
https://github.com/wchang22/LuminS
Last synced: 2 months ago
JSON representation
A fast and reliable alternative to rsync for synchronizing local files written in Rust
- Host: GitHub
- URL: https://github.com/wchang22/LuminS
- Owner: wchang22
- License: mit
- Created: 2019-02-13T03:28:00.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-14T23:46:00.000Z (over 2 years ago)
- Last Synced: 2024-10-07T05:47:38.222Z (3 months ago)
- Language: Rust
- Homepage:
- Size: 179 KB
- Stars: 360
- Watchers: 10
- Forks: 17
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-tools - wchang22/LuminS - A fast and reliable alternative to rsync for synchronizing local files written in Rust (Command Line / Dependency Management)
README
LuminS
Luminous Synchronize
A fast and reliable alternative to rsync for synchronizing local files
Note: This project is no longer actively maintained. Pull requests are still welcome.## Features
100% Rust
Powered by the Rayon library for high parallel perfomance
Supported on Unix-based platforms or Windows
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 informationSUBCOMMANDS:
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 outputsARGS:
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 outputsARGS:
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 outputsARGS:
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!