用rdiff拆分合并文件

本文介绍了在数据同步方案中采用librsync库代替libsync,通过rdiff命令行工具进行文件签名、差异计算和修补,确保文件在不同端的正确同步。在iOS平台和服务器端集成librsync遇到的问题及解决方法,包括在iOS中直接包含源代码编译和在服务器端使用rdiff命令行工具避免动态库封装。
摘要由CSDN通过智能技术生成

我们的一个方案是基于文件做多端数据同步,见另外一篇博客:基于文件的数据同步方案

其中的核心是如何正确、高效地同步文件,一开始我们使用了国产的libsync库:libsync

基本的流程是:有文件A和B,现在想把文件A“变成”文件B,先对文件A做chunk;然后用chunk和文件B对比,得到delta;最后用文件A和delta做sync操作,A就变成了B的复制。但是实际测试之后发现,在某些场景下,合并得到的文件和原始文件的MD5不一致,说明在过程中,文件已经损坏了

看源代码,没有找到原因。于是直接改用另一个更有名的库,librsync,地址在:librsync。编译之后会得到2个东西,一个是可执行命令行rdiff,另一个是静态链接库librsync.a,如果需要动态链接库比如.so或.dylib,可能需要自己改一下Makefile

经过测试,刚才合并出错的2个文件,用rdiff命令执行signature -> delta -> patch之后,MD5完全一致,说明新的库本身是OK的,没有遇到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值