本功能采用的软件架构C/S模式,基于netty+Mybatis开发,采用分模块的方式便于开发和维护。
功能
利用滚动算法实现了两个文件夹资源差异分析,生成差异文件,进行同步,同时利用DB来实现对加密信息进行存储,存放最后一次加密结果,用于下次同步时比对文件是否存在改动,以及防止没必要的重复加密,对应两个文件夹差异不大的情况,提高了同步效率和减少了服务端与客服端文件资源传输量
数据表设计方案
同步场景(服务器A 客户端B)
1. 单向
graph LR
B --> A
B → A
1.如果B存在b文件,但A没有此文件,将B的b文件以全量的形式同步至A中
2.如果B存在b文件A也存在a文件,但B对b文件进行了改动,此时将B的b文件以增量的方式同步至A中
graph LR
A --> B
A → B
1.如果A存在a文件,但A没有此文件,将A的a文件以全量的形式同步至B中
2.如果A存在a文件B也存在a文件,但A对a文件进行了改动,此时将A的a文件以增量的方式同步至B中
2. 双向
graph LR
B --> A
A --> B
B→A
A←B
1.如果A、B都存在a文件,A、B都对a文件同一个地方进行了修改,将A B的a文件差异部分进行合并,并将 差异部分合并至A B的a文件中,保证A、B的a文件内容一致,此时会留下A、B对a文件改动的冲突部分,由用户决定保留差异
2.如果A、B都存在a文件,A、B都对a文件不同地方进行了修改,将A、B的a文件差异部分进行合并,并将差异部分合并至A B的a文件中,保证A、B的a文件内容一致
思路
使用教程
服务端:
java -jar server.jar -mode server -port 8000 -filePort 9000
客服端:
java -jar client.jar -mode client -clientPath "G:/test_sync/client" -host 127.0.0.1 -serverPath "G:/test_sync/server" -port 8000 -filePort 9000
私库地址:https://gitee.com/zhangmuye/linux-team/tree/master/
原文始发于微信公众号(行走318川藏线):实现文件增量同步
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/20915.html