#file-sync #rsync #linux

bin+lib lms

一个快速的、可靠的本地文件同步替代品 rsync

10 个版本

0.4.0 2020年6月28日
0.3.4 2019年7月23日
0.3.3 2019年5月28日
0.3.2 2019年3月23日
0.1.2 2019年2月27日

#445 in 文件系统

Download history 8/week @ 2023-11-20 11/week @ 2023-11-27 20/week @ 2023-12-04 12/week @ 2023-12-11 42/week @ 2023-12-18 9/week @ 2023-12-25 3/week @ 2024-01-01 6/week @ 2024-01-08 7/week @ 2024-01-15 8/week @ 2024-01-22 13/week @ 2024-02-12 27/week @ 2024-02-19 18/week @ 2024-02-26 14/week @ 2024-03-04

每月 72 次下载
httm 中使用

MIT 许可

89KB
2K SLoC

LuminS

Luminous Synchronize

一个快速的、可靠的本地文件同步替代品 rsync

Build Status Code Coverage Docs

Demo

特性

100% Rust
由 Rayon 库提供高性能支持,Rayon 是一个用于高并行的库
支持基于 Unix 的平台
在同步包含大量文件的目录时速度极快
多线程复制、删除和同步
使用 indicatif 库的进度条

使用方法

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]

同步

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

复制

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

删除

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

基准测试

在 Intel i7-8550U 上使用 hyperfine 进行测试,以下为两个测试文件夹:

目录 目录大小 文件数量
1 88MB 7262
2 105MB 252
命令 目录 时间
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

当然,这些基准测试可能高度依赖于 CPU 和 IO 设备。

构建

首先 安装 Rust(推荐使用 rustup)。

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

安装

使用 cargo,

$ cargo install lms

贡献

欢迎提出建议、问题和 pull request!

依赖

~6–17MB
~187K SLoC