基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍

项目主要功能:

java实现的类似rsync项目的文件同步:A拥有不完整文件file_halfB拥有完整文件file_totalAB发送不完整文件的校验码信息,B利用完整文件进行分析后返回差异数据块,A收到差异数据块后与不完整文件file_half进行重组形成完整文件file_total_copy

优点:

同步时传送的文件内容只是差异文件,则可以减少传输的数据,减少同步时间(主要减少了网络传输时间),当差异块相对文件大小很小时,优势尤为突出。还有附加的优点就是支持断点传输,查看差异部分(这有点像svn)。


主要原理:

1.在α端将不完整文件A分割成相同大小的数据块。

2.对每个数据块进行两种校验(滚动校验和md4

3.将校验结果发送给拥有完整文件B的β端

4.β通过搜索文件B的所有大小为S的数据块,来寻找与文件A的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。

5.β生成差异文件块和相关信息并发送给α,α利用差异块和相关信息重新生成完整文件B’。


项目碰到的难点:

1.数据量大,测试调试困难。

2.需要对字节级别的数据进行操作。

3.分析差异数据块的算法设计与优化。

4.设计哪些数据报,怎么设计。

5.错误处理。

6.如何利用数据报控制客户端和服务端的程序运行和交流。

7.网络环境复杂。

项目进度与需要完善的问题:

1.核心同步在单机上(利用127.0.0.1环回测试)已经实现。

2.暂时只支持一次操作,用户体验较差。

3.程序运行时客户端和服务器交互能力较差。

项目主要技术:

java语言,javafx界面,rsync算法参考


项目测试界面:

基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍_第1张图片

项目核心时序图:

基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍_第2张图片

你可能感兴趣的:(基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍)