网络数据同步开发库 libsync

码农软件 · 软件分类 · 网络工具包 · 2019-03-01 09:29:16

软件介绍

libsync是一个用于网络数据同步的开发库。

假设现在有两台计算机Alpha和Beta ,计算机Alpha能够访问A文件,计算机Beta能够访问B文件,文件A和B非常相似,计算机Alpha和Beta通过低速网络互联。基于dedupe技术的数据同步算法大致流程与Rsync相似,简单描述如下:
1、Beta采用数据切分算法,如FSP(fixed-size partition)、CDC(content-defined chuking),将文件B分割成大小相等或不等的数据块;
2、Beta对于每一个数据块,计算一个类似rsync弱校验值和md5强校验值,并记录数据块长度len和在文件B中的偏移量offset;
3、Beta将这将数据块信息发送给Alpha;
4、Alpha采用同样的数据块切分技术将文件A切成大小相等或不等的数据块,并与Beta发过来的数据信息进行搜索匹配,生成差异编码信息;
5、Alpha将差异编码信息发送给Beta,并同时发送重构文件A的指令;
6、Beta根据差异编码信息和文件B重构文件A。
上面算法描述中,有几个关键问题需要解决,即文件切分、切分数据块信息描述、差异编码、差异编码信息描述、文件同步。

libsync函数库由提供三个API,原型描述如下:
1、int file_chunk(char src_filename, char chunk_filename, int chunk_algo)
功能:对件进行切分生成分块描述文件。
参数:src_filename为源文件,chunk_filename为生成的块信息描述文件,chunk_algo为文件切分算法,目前支持FSP、CDC、SB三种。

2、int file_delta(char src_filename, char chunk_filename, char delta_filename, int chunk_algo)
功能:使用生成的块描述信息对文件进行差异编码。
参数:src_filename为待编码文件,chunk_filename为通过函数file_chunk生成的块描述文件,chunk_algo为文件切分算法。

3、int file_sync(char src_filename, char delta_filename)
功能:使用差异编码文件将源文件同步至目标文件。
参数:src_filename为基本文件,delta_filename为通过函数file_delta生成的差异编码文件。

数据同步有PULL和PUSH两种应用模式,PULL是将远程数据同步到本地,而PUSH是将本地数据同步到远程。对应到同步算法,主要区别在于数据分块和差异编码位置不同。PULL和PUSH同步模式步骤分别如下所述。
PULL同步模式流程:
1、本地对文件A进行数据切分,生成数据块描述文件chunk;
2、上传chunk文件至远程服务器;
3、远程服务器对文件B进行差异编码,生成差异编码文件delta;
4、下载delta文件至本地;
5、本地同步文件A至文件B,相当于下载文件B到本地文件A。

PUSH同步模式流程:
1、远程服务器对文件B进行数据切分,生成数据块描述文件chunk;
2、下载chunk文件至本地;
3、本地对文件A进行差异编码,生成差异编码文件delta;
4、上传delta文件至远程服务器;
5、远程同步文件B到A,相当于上传文件A到远程文件B。

本文地址:https://codercto.com/soft/d/374.html

图解密码技术(第3版)

图解密码技术(第3版)

[日] 结城浩 / 周自恒 / 人民邮电出版社 / 2016-6 / 89.00元

本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。 第1部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第2部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第3部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技......一起来看看 《图解密码技术(第3版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具