[发明专利]一种基于内容分块的远程文件实时更新方法有效

专利信息
申请号: 201410029703.7 申请日: 2014-01-22
公开(公告)号: CN103729225A 公开(公告)日: 2014-04-16
发明(设计)人: 廖湘科;李珊珊;刘晓东;彭绍亮;谢欣伟;贾周阳;董德尊;张菁;林彬;孔志印;刘磊 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F9/445 分类号: G06F9/445;H04L29/08
代理公司: 国防科技大学专利服务中心 43202 代理人: 郭敏
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 内容 分块 远程 文件 实时 更新 方法
【权利要求书】:

1.一种基于内容分块的远程文件实时更新方法,其特征在于包括以下步骤:

第一步,对Fold文件分块存储,方法是采用固定大小分块的策略将文件分成n块,按顺序将文件从前往后划分成大小相同的数据块,数据块的大小K根据应用不同设置,记每一个数据块为chunk1、chunk2、…、chunkn,最后一个数据块chunkn的大小小于或等于其他数据块的大小,n为正整数,n=L/K上取整,其中L为文件大小;

第二步,采用Hash算法为chunk1、chunk2、…、chunkn计算摘要,记每一个数据块的摘要为hash1、hash2、…、hashn;再对数据块的开头和结尾各采用rabin-fingerprinting算法计算一个指纹,方法是:除第一个数据块外每一个数据块选取所属数据块开头48字节的内容,除最后一个数据块外每一个数据块选取结尾48字节的内容,采用rabin-fingerprinting算法计算每个数据块的指纹值,记这些指纹值为第一数据块结尾指纹finpr-back1、第二数据块开头指纹finpr-front2、第二数据块结尾指纹finpr-back2、…、第n-1数据块开头指纹finpr-frontn-1、第n-1数据块开头指纹finpr-backn-1、第n数据块开头指纹finpr-frontn

第三步,用户终端从云端服务器下载原始文件Fold和分块信息,并进行更新操作,得到Fnew

第四步,用户终端采用基于CDC的数据分块方式对Fnew分块,采用一个48字节的滑动窗口,窗口长度须与rabin-fingerprinting的数据块长度一致,从Fnew的起始部分开始执行以下动作:

4.1为当前窗口内的48字节的内容采用rabin-fingerprinting计算一个指纹finpr;

4.2把指纹finpr与finpr-back1、finpr-back2、…、finpr-backk、…、finpr-backn-1作对比,若存在finpr-backk与finpr相等,其中1≤k<n,则转入步骤4.3;若不存在finpr-backk与finpr相等,则判断是否到Fnew的尾部,若到Fnew的尾部则转第五步,如果未到Fnew的尾部,把窗口向后滑动1个字节,并转步骤4.1,其中1≤k<n;

4.3把滑动窗口向Fnew的尾部方向滑动48个字节,采用rabin-fingerprinting算法为窗口内的48字节的内容计算指纹finprnext,并把finprnext和finpr-frontk+1作对比,若finprnext和finpr-frontk+1相等,说明当前窗口是分块的边界,从当前窗口的起始地址处分块,其分块的内容为更新后的一个数据块,记为chunki',其中i初始值为1,并在之后分块时进行自增操作,记分块结束时i值为m;若finprnext和finpr-frontk+1不相等,说明当前窗口不是分块的边界,将窗口向Fnew的起始处滑动47个字节,即相对步骤4.2存在finpr-backk与finpr相等时的窗口位置向后滑动了1个字节,转步骤4.1;

第五步,采用与第二步中相同的Hash算法为更新后的数据块chunk1'、chunk2'、…、chunki'、…、chunkm'计算摘要,得到更新后的每个数据块的摘要hash1'、hash2'、…、hashi'、…、hashm';

第六步,对比更新前的数据块序列chunk1、chunk2、…、chunkj、…、chunkn和更新后的数据块序列chunk1'、chunk2'、…、chunki'、…、chunkm',其中1≤i≤m,1≤j≤n,对比数据块的摘要,根据摘要是否相等判断两个数据块是否相同,找出发生变化数据块,方法如下:

用curBefore指示当前比较到的更新前文件Fold的数据块的下标,则当前Fold中的数据块为chunkcurBefore,数据块的hash值为hashcurBefore,curAfter指示当前比较到的更新后文件Fnew的数据块的下标,则当前Fnew中的数据块为chunkcurAfter',数据块的hash值为hashcurAfter',curBefore和curAfter初始值都为1,用数组RedundantBlock记录Fold中有但Fnew中没有的数据块编号,即需要删除的数据块编号,用数组NewBlock记录Fold中没有但Fnew中有的数据块编号,即需要添加到Fold中的数据块编号;

6.1将hashcurAfter'与数据块chunkcurBefore、chunkcurBefore+1、…、chunkj、…、chunkn的摘要hashcurBefore、hashcurBefore+1、…、hashj、…、hashn进行比较,若存在某个数据块的摘要hashk与hashcurAfter'相等,执行步骤6.2,否则执行步骤6.3;

6.2存在hashj与hashcurAfter'相等说明Fold中数据块chunkk与Fnew中数据块chunkcurAfter'是相同的,不需要重新存储,同时也说明Fnew内容中已经不包含Fold的数据块chunkcurBefore、chunkcurBefore+1、…、chunkj-1,需要删除,将需要删除的数据块编号curBefore、curBefore+1、…、j-1存入到数组RedundantBlock中;若j不等于原有数据块数量n,执行步骤6.4,否则执行步骤6.5;

6.3将新数据块编号curAfter加入数组NewBlock中,curBefore不变,curAfter增加1,若curAfter小于或等于m,执行步骤6.1,否则,执行步骤6.6;

6.4为curBefore赋新值j,curAfter增加1,若curAfter小于或等于更新数据块数量m,执行步骤6.1,否则,执行步骤6.6;

6.5当j等于n时,将编号curAfter、curAfter+1、…、m加入到数组NewBlock中,执行第七步;

6.6当curAfter等于m时,将编号curBefore、curBefore+1、…、n加入到数组RedundantBlock中,执行第七步;

第七步,将数组RedundantBlock中记录的数据块从云端服务器Fold文件中删除,将数组NewBlock中记录的数据块从用户终端Fnew文件中通过网络上传到云端服务器,进行文件块的拼接,拼接过程如下:

7.1设置变量i指向Fnew数据块和变量j指向Fold数据块,i和j的初值均为1,记新生成文件为F;

7.2如果j大于n,转第八步;

7.3如果j指向的数据块不在RedundantBlock中记录,则将j指向的数据块加入F,j增1,执行步骤7.2;

如果j指向的数据块在RedundantBlock中记录,则j自增到j指向的数据块不在RedundantBlock中记录或j大于n,i自增到i指向的数据块在NewBlock中记录,如果i大于m执行步骤7.2,否则将i指向的数据块加入F,转7.4;

7.4变量i自增,如果i指向的数据块在NewBlock中记录,将i指向的数据块加入F,转步骤7.4,否则转步骤7.2。

第八步,结束,文件更新完成,文件F即为Fnew在云端的副本。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410029703.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top