[发明专利]一种基于内容分块的远程文件实时更新方法有效
申请号: | 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在云端的副本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410029703.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于汽轮机排汽缸的导流环
- 下一篇:一体化叶轮
- 内容再现系统、内容提供方法、内容再现装置、内容提供装置、内容再现程序和内容提供程序
- 内容记录系统、内容记录方法、内容记录设备和内容接收设备
- 内容服务系统、内容服务器、内容终端及内容服务方法
- 内容分发系统、内容分发装置、内容再生终端及内容分发方法
- 内容发布、内容获取的方法、内容发布装置及内容传播系统
- 内容提供装置、内容提供方法、内容再现装置、内容再现方法
- 内容传输设备、内容传输方法、内容再现设备、内容再现方法、程序及内容分发系统
- 内容发送设备、内容发送方法、内容再现设备、内容再现方法、程序及内容分发系统
- 内容再现装置、内容再现方法、内容再现程序及内容提供系统
- 内容记录装置、内容编辑装置、内容再生装置、内容记录方法、内容编辑方法、以及内容再生方法