使用旧的 Rust 2015
0.1.0 |
|
---|---|
0.0.0 |
|
#27 在 #rsync
55KB
1.5K SLoC
这是什么?
这是一个用 Rust 编程语言编写的 rsync 克隆。它的目的是在一个单独的程序中提供 rsync、rdiff 和 zsync 的功能,以及一些附加功能,如缓存文件签名以使重复同步更快。它还将提供一个库,允许在您的程序中使用这些功能。
当前状态
核心功能已存在。您可以索引和同步本地文件夹。
下一步是实现 SSH 和 HTTP 远程。
如何使用
常用选项:-X
指示源侧索引文件的位置,而 -
指示目标侧的索引文件。
rsync
$ rrsync sync some/folder othermachine:folder
预计算的索引是可选的,但可以使操作更快
$ rrsync index -x folder.idx some/folder
$ ssh othermachine \
rrsync index -x folder.idx folder
$ rrsync sync -X folder.idx -x othermachine:folder.idx some/folder othermachine:folder
rdiff
# Same as rdiff (signature/delta/patch)
$ rrsync index -x signature.idx old/folder
$ rrsync diff -o patch.bin -x signature.idx new/folder
$ rrsync patch old/folder patch.bin
zsync
$ rrsync index -x data.tar.rrsync.idx data.tar
$ rrsync sync -X data.tar.rrsync.idx old/data.tar
# Or over network
$ rrsync sync -X http://example.org/data.tar.rrsync.idx old/data.tar
备注
rsync 算法:[链接](https://rsync.samba.org/tech_report/) 如何工作:[链接](https://rsync.samba.org/how-rsync-works.html)
zsync:[链接](http://zsync.moria.org.uk/)
压缩包:[链接](https://crates.org.cn/crates/flate2)
依赖项
~23–30MB
~475K SLoC