#librsync #rsync #delta #signature #calculate #access #system

librsyncr

librsyncr 是一个Rust库,可以在不访问同一系统上的两个文件的情况下计算并应用两个文件之间的差异

2个版本

0.1.1 2019年10月30日
0.1.0 2019年10月22日

#12 in #rsync

MPL-2.0 许可协议

35KB
677

librsyncr

Crates.io

文档

librsyncr 是一个Rust库,可以在不访问同一系统上的两个文件的情况下计算两个文件之间的差异。它是librsync C库的重新实现(不查看librsync源代码),签名和差异文件与该库兼容。C库有3562行C代码(不包括注释或供应商的Blake2和MD4代码),但这个库只有753行。

strong_hash 功能

默认用于从签名文件中查找块的哈希不抵抗哈希DoS攻击。如果您正在将此库用于处理不受信任的签名文件的网络服务,您可能需要启用 strong_hash 功能。

性能

在Intel Core-i7-6700K 4.0 GHz处理器上使用Wikiquote存档文件(约38 MB)进行测试

# this library
./target/release/examples/rdiff signature ./enwikiquote-20170501-abstract.xml ./enwikiquote-20170501-abstract-sig.xml

85ms (447 MB/s)

# librsync
./rdiff signature ./enwikiquote-20170501-abstract.xml ./enwikiquote-20170501-abstract-sig.xml

77ms (494 MB/s)


# this library
./target/release/examples/rdiff delta ./enwikiquote-20170501-abstract-sig.xml ./enwikiquote-20170701-abstract.xml ./enwikiquote-delta.xml

115ms (330 MB/s)

# librsync
./rdiff delta ./enwikiquote-20170501-abstract-sig.xml ./enwikiquote-20170701-abstract.xml ./enwikiquote-delta.xml

118ms (322 MB/s)


# this library
./target/release/examples/rdiff patch ./enwikiquote-20170501-abstract.xml ./enwikiquote-delta.xml ./enwikiquote-new.xml

67ms (567 MB/s)

# librsync
./rdiff patch ./enwikiquote-20170501-abstract.xml ./enwikiquote-delta.xml ./enwikiquote-new.xml

24ms (1583 MB/s)

文件格式

C librsync库有签名文件格式文档,.NET librsync库有差异文件格式文档

许可协议

在Mozilla公共许可证版本2.0下授权。

依赖项

~280KB