#sync #rsync #file #file-copy #progress-bar #linux #multi-threading

lms_lib

一种比 rsync 更快、更可靠的本地文件同步替代方案

1 个不稳定版本

0.4.0 2022年1月31日

#1349 in 文件系统

Download history 17/week @ 2024-03-30 6/week @ 2024-04-06 7/week @ 2024-06-15 68/week @ 2024-06-22

每月 75 次下载

MIT 许可证

74KB
1.5K SLoC

LuminS 库

光亮同步

一种比 rsync 更快、更可靠的本地文件同步替代方案

Build Status Code Coverage Docs

Demo

特性

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

复制

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())?;
}

同步

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())?;
}

删除

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

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

基准测试

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

目录 目录大小 文件数量
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 和 I/O 设备。

贡献

欢迎建议、问题和拉取请求!

依赖

~6–15MB
~162K SLoC