CN104092780A - 基于文件分块的文件修改方法、单文件同步方法及装置 - Google Patents
基于文件分块的文件修改方法、单文件同步方法及装置 Download PDFInfo
- Publication number
- CN104092780A CN104092780A CN201410368093.3A CN201410368093A CN104092780A CN 104092780 A CN104092780 A CN 104092780A CN 201410368093 A CN201410368093 A CN 201410368093A CN 104092780 A CN104092780 A CN 104092780A
- Authority
- CN
- China
- Prior art keywords
- data block
- file
- block
- byte
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于文件分块的文件修改方法、同步方法及装置,文件修改装置包括:划分模块用于采用定长的分块方法将文件划分为多个数据块,并在文件头中记录所有数据块的分块信息;修改模块用于在文件中增加字节或者删除字节后,更新文件头中的分块信息;单文件同步装置包括:接收模块用于接收文件分块装置对文件B修改后生成的文件头SB;差异信息生成模块用于将本地文件A的文件头SA和SB比对,生成SA和SB的差异信息;同步模块用于将所述差异信息发送至文件分块装置,并根据文件分块装置返回的重构本地文件A所需的数据信息更新本地文件A。本发明能够减少文件修改对文件分块的影响,从而在同步文件时,减少传输的数据量。
Description
技术领域
本发明涉及数据同步技术,具体涉及一种基于文件分块的文件修改方法及装置、单文件同步方法及装置。
背景技术
云存储的理念在于允许用户随时随地地访问存储在云端的文件,并且允许用户对文件进行修改和删除等操作。因此,需要及时地同步用户端和服务器的文件,保证文件的一致性。
目前的单文件同步方法主要是rsync算法。假设服务器上的文件为A,客户端的文件为B。文件A和文件B非常相似。这两个文件同步的步骤为:
1)用户端将文件B分割成连续不重叠的固定大小数据块K,最后一个块的大小可能会<k;
2)用户端为每一个块计算校验值,生成一个32位的弱滚动校验和一个128位的MD4校验;
3)用户端将校验值发送给服务器;
4)服务器通过以相同的方式,对文件A切块,并计算校验值;
5)服务器比对文件A和用户端发来的文件B的校验信息,并生成差异编码信息;
6)服务器给用户端发送差异编码信息,同时发送重构文件A的指令;
7)用户端将根据差异编码信息和文件B重构文件A。
Rsync是应用较广的文件同步方法,但是由于它采用的是定长的文件切割方法,因此,在文件中1个字节的变化会带来大量切片的变化,存在同步数据量过大的问题。
发明内容
本发明需要解决的技术问题是提供一种基于文件分块的文件修改方法及装置、单文件同步方法及装置,以减少文件修改对文件分块的影响,从而在同步文件时,减少传输的数据量。
为了解决上述技术问题,本发明提供了一种基于文件分块的文件修改方法,包括:
以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
当在文件中增加字节时,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则合成新的第i个数据块;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则从增加字节处,连续截取长为K的数据块,直至最后一个数据块的长度小于K,i、k、n、K均为大于0的正整数,至此文件分块结束;
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新文件头中的分块信息。
进一步地,所述当在文件中增加字节时,在文件分块结束后,更新文件头中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在文件头中。
进一步地,所述当在文件中删除字节时,所述在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在文件头中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在文件头中。
为了解决上述技术问题,本发明还提供了一种基于如上所述的文件修改方法的单文件同步方法,包括:
第一装置接收到第二装置对文件B增加k字节或删除k字节后生成的文件头SB;
第一装置将本地文件A的文件头SA和SB进行比对,生成SA和SB的差异信息;
第一装置将所述差异信息发送至第二装置;
第二装置根据所述差异信息和修改后的文件B,向第一装置返回重构所述本地文件A所需的数据信息,第一装置根据所述数据信息更新所述本地文件A;
其中,所述第一装置为服务器,所述第二装置为客户端;或者,所述第一装置为客户端,所述第二装置为服务器。
进一步地,对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
进一步地,对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
进一步地,所述第一装置将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息;
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息;
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息。
进一步地,当第一装置与第二装置完成同步后,第一装置根据本地文件A的文件头SA中记录的所有数据块的长度以及数据块总数,计算一个数据块的长度平均值,如果所述数据块的长度平均值小于预设阈值,则所述第一装置对所述本地文件A以K为一个数据块的长度重新分块,并通知第二装置以相同的方式对文件B重新分块,并计算校验值,生成新的SA和SB。
为了解决上述技术问题,本发明还提供了一种基于文件分块的文件修改装置,包括:
划分模块,用于以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
修改模块,用于当在文件中增加字节时,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则合成新的第i个数据块;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则从增加字节处,连续截取长为K的数据块,直至最后一个数据块的长度小于K,i、k、n、K均为大于等于1的整数,至此文件分块结束;
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新头文件中的分块信息;
发送模块,用于将更新的头文件发送至单文件同步装置。
进一步地,所述修改模块,用于当在文件中增加字节时,在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在头文件中;
所述修改模块,用于当在文件中删除字节时,所述在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在头文件中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在头文件中。
为了解决上述技术问题,本发明还提供了一种基于如上所述的文件修改装置的单文件同步装置,包括:
接收模块,用于接收文件分块装置对文件B增加k字节或删除k字节后生成的文件头SB,还用于接收所述文件分块装置返回重构所述本地文件A所需的数据信息;
差异信息生成模块,用于将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息;
同步模块,用于将所述差异信息发送至所述文件分块装置,并根据所述文件分块装置返回的重构所述本地文件A所需的数据信息更新所述本地文件A。
进一步地,对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
进一步地,对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
进一步地,所述差异信息生成模块,用于将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息;
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息;
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息。
为了解决上述技术问题,本发明还提供了一种单文件同步系统,包括:如上所述的文件修改装置和如上所述的单文件同步装置;
其中,所述文件修改装置为服务器,所述单文件同步装置为客户端;或者,所述文件修改装置为客户端,所述单文件同步装置为服务器。
与现有技术相比,本发明实施例提供的文件分块方法及装置、文件同步方法及装置,具有以下有益效果:
1)对文件的修改只影响增加或删除字节位置附近的数据块信息,因此,对文件切片影响较小,在同步文件时,只需要更新增加或删除字节位置附近的数据块的信息,传输的文件内容也相应减少;2)文件分块大小不会无限制大,系统设计人员可根据系统的承受能力设计K值,以平衡管理复杂性和文件传输代价;3)杜绝了大量文件碎片。
附图说明
图1是现有技术中文件A和文件B的组成示意图;
图2是实施例中文件分块方法的流程图;
图3是实施例中基于上述文件分块方法的单文件同步方法的流程图;
图4是实施例中一种单文件同步系统的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例:
本实施例中包括两个装置,其中,第一装置为服务器,第二装置为客户端;或者,第一装置为客户端,第二装置为服务器,本实施例的前提是第一装置和第二装置上同时存在一个文件,同步算法的目标在于保持两个装置的文件的一致,同时要求第二装置和第一装置的数据块传输量最小。约定第一装置上的文件为A,第二装置的文件为B。系统为文件A维护文件分块信息为SA,文件B的分块信息为SB。文件A和文件B的组成如图1所示,文件头head,也即SA和SB,包含了数据块的总块数以及所有数据块的分块信息,即对于每一个数据块,需记录数据块的初始字节的偏移值(offset)、数据块长度、数据块的校验值、索引编号以及实际存储的位置链接(系统借助于该链接可获取数据块的详细内容),dbi表示第i个数据块。初始状态下,SA和SB是一致的,如果在第一装置或第二装置对文件进行了更改,就涉及到SA和SB的同步问题,即如果在客户端对文件进行了修改,则服务器端需进行同步,如果在服务器端对文件进行了修改,则客户端需进行同步。
在文件增量同步算法的设计中,需要尽可能减少重复数据传输,即尽量不传输文件A和文件B的相同部分。但是在Rsync算法中,定长的文件切块方法使得文件中一个字节的增减都会带来大量数据块的改变。为此,本实施例提供了一种文件分块方法,如图2所示,以对第二装置的文件进行修改为例,包括以下步骤:
S101:以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
S102:第二装置对文件进行修改;
对文件的修改包括了替换、增加和删除。替换可理解为用等量字节的内容去替换原有的内容,因此,对文件的切块方式不产生影响。所以,本发明只考虑对文件增加和删除字节的情况。
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新文件头中的分块信息。
其中,当在文件中增加字节时,在文件分块结束后,更新文件头中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在文件头中。
在一个应用示例中,假设增加的字节的首位为距离文件头部offset处,长度为k,且offseti<=offset<=offseti+lengthi(即,在第i个数据块中增加字节),则存在以下情况:
a)若lengthi+k<=K,则意味着dbi在扩展了k个字节后,仍然未达到数据块的最大长度。因此,新增加的k个字节与原有的第i个数据块dbi组合成新的数据块,并通报给head,由head重新计算dbi的校验值以及后续数据块的offset值,即原数据块的偏移值+k。
b)若lengthi+k>K,则意味着dbi在扩展了k个字节后,已经达到了数据块的最大长度,则继续判断:dbi+1
i)lengthi+lengthi+1+k<=2K,则意味着可将dbi和dbi+1以及新增加的k个字节,组合成2个数据块,因此,优先从offseti至offseti+k的文件块中,截取长为K的文件块,并记为dbi,从offseti+K至offseti+k的文件内容记为dbi+1;同时,通知文件头head更改相应的数据块的分块信息,参见a);
ii)lengthi+lengthi+1+k>2K,意味着dbi、dbi+1以及新增加的k个字节将超过2个数据块的长度。因此,优先从offseti至offseti+k的文件块中,截取长为K的文件块,并标识为dbi;然后,从offseti+K至offseti+k的文件块中,截取长为K的文件块,标识为dbi+1,从offseti+2K至offseti+k的文件块中,继续以K为单位,对文件块进行切片,直至最后一个块的长度小于K,记为dbj。文件分块结束后,更新head中的分片信息,即计算所述第i个数据块的校验值,更新其数据块大小为K,计算新增数据块的校验值、数据块偏移值、数据块大小,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在文件头中。
上述还有一种情况没有讨论到,即dbi为文件的最后一个数据块,也即用户对文件的操作为在文件末尾增加k字节的内容,这类情况可参考ii)。
其中,当在文件中删除字节时,所述在文件分块结束后,更新文件头中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在文件头中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在文件头中。
在一个应用示例中,假设删除的字节的首位为距离文件头部offset处,长度为k,且offseti<=offset<=offseti+lengthi(即,在第i个数据块中删除字节)。删除字节时的处理原则是:尽量减少对数据块切分方式的改变。因此,删除字节的处理步骤如下:
a)若k<=lengthi-(offset-offseti)则意味着用户对文件的修改仅改变了第i个数据块dbi,对文件的其他分块不产生影响。因此,仅需要head更新第i个数据块的校验信息及后续数据块的偏移值,即offseti+1-k;
b)如果lengthi-(offset–offseti)<=k<=lengthi-(offset–offseti)+lengthi+1,改变了第i和i+1这两个数据块dbi、dbi+1,为了不影响分块,dbi的数据块的起始位置还是offseti,长度变为offset–offseti;dbi+1的起始位置变为offset,长度变为lengthi+lengthi+1-offset–offseti)-k,随后数据块的偏移值都减去k;
此时,块数还是没有变,即没有删去数据块,也就是说,索引的个数没有变,因此,head仅需要更新dbi的校验信息、数据块大小,dbi+1的校验信息、偏移值和数据块大小,以及后续数据块的偏移值。
c)否则意味着需要删除多个数据块。因此,自offset开始,删除至第j个数据块,其中j满足以下条件:
lengthi-(offset–offseti)+(lengthi+1+lengthi+2+…+lengthj-1)<=k<=lengthi-(offset–offseti)+(lengthi+1+lengthi+2+…+lengthj);j>=i+2;
对于第j个数据块,删除自offsetj至k–[lengthi-(offset–offseti)+(lengthi+1+lengthi+2+…+lengthj-1)的字节。
同时,通知head删除数据块i+1至j的相关信息,更新dbi和dbj的校验信息,并修改随后的数据块的offset信息为:原数据块偏移值-k。
比如,j=i+2;满足:
lengthi-(offset–offseti)+lengthi+1<=k<=lengthi-(offset–offseti)+lengthi+1+lengthi+2,
对于第i个数据块(同上),dbi的数据块的起始位置还是offseti,长度变为offset–offseti;
对于第j个数据块,起始位置为offset,长度变为lengthi-(offset–offseti)+lengthi+1+lengthi+2-k;
此时的数据块会少1个,也就是说索引会发生改变,删除字节后的第j个数据块作为第i+1个数据块,随后的数据块的索引编号也发生相应改变,随后的数据块的起始位置-k。
增加或者删除字节后,依据上述方法,会生成新的head信息,即SB,系统将SB发送给第一装置,由此进入了第一装置的同步阶段。
如图3所示,本实施例提供了一种基于上述文件分块方法的单文件同步方法,包括以下步骤:
S201:第一装置接收到第二装置对文件B增加k字节或删除k字节生成的文件头SB;
S202:第一装置比对本地文件A的文件头SA和SB,生成SA和SB的差异信息;
S203:第一装置将所述差异信息发送至第二装置;
S204:第二装置根据所述差异信息和修改后的文件B,向第一装置返回重构所述本地文件A所需的数据信息;
S205:第一装置根据所述数据信息更新所述本地文件A。
其中,所述第一装置为服务器,所述第二装置为客户端;或者,所述第一装置为客户端,所述第二装置为服务器。
其中,对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
具体地,对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
在步骤S202中,所述第一装置将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息(对应于增加或删除字节而没有影响数据块分块个数的情况);
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息(对应于增加字节后增加了数据块的情况,该数据块对应第i个数据块,后续N个数据块对应新增数据块);
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息(对应于删除字节后减少数据块的情况,该数据块对应第i个数据块,其后第(-N+1)个数据块对应第i+1个数据块)。
在步骤S204中,第二装置接收到上述差异信息后,根据所述差异信息和修改后的文件B,向第一装置返回重构所述本地文件A所需的数据信息,例如,对于校验信息不同的数据块,传输相应的数据块内容的指示;对于新增加的数据块,传输新增的数据块内容;对于缺失的数据块,删除相应的数据块。这里与现有技术中服务器对客户端的修改进行同步的方法相同,此处不再赘述。
作为一种优选的方式,为了减少文件切片碎片,本实施例设置定期的文件重切块操作。当第一装置与第二装置完成同步后,第一装置根据本地文件A的文件头SA中记录的所有数据块的长度以及数据块总数,计算一个数据块的长度平均值,如果所述数据块的长度平均值小于预设阈值,则所述第一装置对所述本地文件A以K为一个数据块的长度重新分块,并通知第二装置以相同的方式对文件B重新分块,并计算校验值,生成新的SA和SB。
由于删除字节时,不会重新进行文件切割。因此,优选地,本实施例可以选择在增加字节时进行文件碎片检查。用户增加了字节时,当第一装置端与用户端完成同步后,第一装置读取根据SA中的记录,计算一个数据块的长度平均值,如果过低,则表示文件碎片较多。此时,第一装置和第二装置均将对文件A和文件B重新分块,并计算校验值,生成新的SA和SB。分块过程中,以K为数据块大小,只有最后一个切块的大小会小于K。由于重切块发生于文件同步之后,因此,新生成的SA和SB是一致的。
若以第一装置对文件修改为例,与上述方式是类似的,只是两个执行的装置互换。
如图4所示,本实施例提供了一种单文件同步系统,包括:基于文件分块的文件修改装置(即上文提到的第二装置)和基于文件修改装置的单文件同步装置(即上文提到的第一装置),其中:
所述单文件同步装置为服务器,所述文件分块装置为客户端;或者,所述单文件同步装置为客户端,所述文件分块装置为服务器。
文件分块装置,包括:
划分模块,用于以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
修改模块,用于当在文件中增加字节时,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则合成新的第i个数据块;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则从增加字节处,连续截取长为K的数据块,直至最后一个数据块的长度小于K,i、k、n、K均为大于等于1的整数,至此文件分块结束;
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新头文件中的分块信息。
发送模块,用于将生成的头文件发送至单文件同步装置。
其中,所述修改模块,用于当在文件中增加字节时,在文件分块结束后,更新文件头中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在文件头中;
所述修改模块,用于当在文件中删除字节时,所述在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在头文件中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在文件头中。
其中,单文件同步装置,包括:
接收模块,用于接收文件分块装置对文件B增加k字节或删除k字节后生成的文件头SB,还用于接收所述文件分块装置返回重构本地文件A所需的数据信息;
差异信息生成模块,用于比对本地文件A的文件头SA和SB,生成SA和SB的差异信息;
同步模块,用于将所述差异信息发送至文件分块装置,并,根据所述文件分块装置返回的重构本地文件A所需的数据信息更新所述本地文件A。
其中,对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
其中,对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
其中,所述差异信息生成模块,用于将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息(对应于增加或删除字节而没有影响数据块分块个数的情况);
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息(对应于增加字节后增加了数据块的情况,该数据块对应第i个数据块,后续N个数据块对应新增数据块);
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息(对应于删除字节后减少数据块的情况,该数据块对应第i个数据块,其后第(-N+1)个数据块对应第i+1个数据块)。
从上述实施例可以看出,相对于现有技术,上述实施例中提供的文件分块方法及装置、文件同步方法及装置,具有以下有益效果:
1)对文件的修改只影响增加或删除字节位置附近的数据块信息,因此,对文件切片影响较小,在同步文件时,只需要更新增加或删除字节位置附近的数据块的信息,传输的文件内容也相应减少;2)文件切片大小不会无限制大,系统设计人员可根据系统的承受能力设计K值,以平衡管理复杂性和文件传输代价;3)杜绝了大量文件碎片。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种基于文件分块的文件修改方法,包括:
以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
当在文件中增加字节时,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则合成新的第i个数据块;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则从增加字节处,连续截取长为K的数据块,直至最后一个数据块的长度小于K,i、k、n、K均为大于0的正整数,至此文件分块结束;
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新文件头中的分块信息。
2.如权利要求1所述的方法,其特征在于:
所述当在文件中增加字节时,在文件分块结束后,更新文件头中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在文件头中。
3.如权利要求1所述的方法,其特征在于:
所述当在文件中删除字节时,所述在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在文件头中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在文件头中。
4.一种基于如权利要求1或2或3所述的文件修改方法的单文件同步方法,包括:
第一装置接收到第二装置对文件B增加k字节或删除k字节后生成的文件头SB;
第一装置将本地文件A的文件头SA和SB进行比对,生成SA和SB的差异信息;
第一装置将所述差异信息发送至第二装置;
第二装置根据所述差异信息和修改后的文件B,向第一装置返回重构所述本地文件A所需的数据信息,第一装置根据所述数据信息更新所述本地文件A;
其中,所述第一装置为服务器,所述第二装置为客户端;或者,所述第一装置为客户端,所述第二装置为服务器。
5.如权利要求4所述的方法,其特征在于:
对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
6.如权利要求5所述的方法,其特征在于:
对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
7.如权利要求6所述的方法,其特征在于:
所述第一装置将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息;
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息;
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息。
8.如权利要求4所述的方法,其特征在于:
当第一装置与第二装置完成同步后,第一装置根据本地文件A的文件头SA中记录的所有数据块的长度以及数据块总数,计算一个数据块的长度平均值,如果所述数据块的长度平均值小于预设阈值,则所述第一装置对所述本地文件A以K为一个数据块的长度重新分块,并通知第二装置以相同的方式对文件B重新分块,并计算校验值,生成新的SA和SB。
9.一种基于文件分块的文件修改装置,包括:
划分模块,用于以K为数据块的固定长度,采用定长的分块方法将所述文件划分为多个数据块,并在文件头中记录所有数据块的分块信息,所述分块信息包括:数据块的总块数以及每个数据块的偏移值、长度、校验值、索引编号以及实际存储的位置链接;
修改模块,用于当在文件中增加字节时,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则合成新的第i个数据块;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则从增加字节处,连续截取长为K的数据块,直至最后一个数据块的长度小于K,i、k、n、K均为大于等于1的整数,至此文件分块结束;
当在文件中删除字节时,如果在第i个数据块中删除k字节,不会删除至下一数据块,则将删除k字节后的数据块作为第i个数据块;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则将删除字节起始位置之前的数据块作为第i个数据块,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,至此文件分块结束;
当在文件中增加字节或者删除字节时,在文件分块结束后,更新头文件中的分块信息;
发送模块,用于将更新的头文件发送至单文件同步装置。
10.如权利要求9所述的装置,其特征在于:
所述修改模块,用于当在文件中增加字节时,在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,合成新的第i个数据块后,重新计算该数据块的校验值和长度,并修改后续数据块的偏移值为原偏移值+k,并记录在文件头中;
如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为K,计算新增数据块的校验值、偏移值、长度,并修改后续数据块的偏移值为原偏移值+k,并修改各个数据块的索引编号,记录在头文件中;
所述修改模块,用于当在文件中删除字节时,所述在文件分块结束后,更新头文件中的分块信息,包括:
如果在第i个数据块中删除k字节,不会删除至下一数据块,则重新计算该数据块的校验值和长度,修改后续数据块的偏移值为原偏移值-k,并记录在头文件中;
如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,j>i>0,则在文件分块结束后,计算所述第i个数据块的校验值,更新其数据块长度为删除字节起始位置之前的数据块长度,将删除字节至第j个数据块的结束位置之后的数据块作为第i+1个数据块,更新所述第i+1个数据块的偏移值为删除字节的起始位置、更新其数据块长度为自删除字节的起始位置起至第j个数据块结束的长度-k,并计算所述第i+1个数据块的校验值,修改后续数据块的偏移值为原偏移值-k,并修改后续数据块的索引编号,记录在头文件中。
11.一种基于如权利要求9或10所述的文件修改装置的单文件同步装置,包括:
接收模块,用于接收文件分块装置对文件B增加k字节或删除k字节后生成的文件头SB,还用于接收所述文件分块装置返回重构所述本地文件A所需的数据信息;
差异信息生成模块,用于将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息;
同步模块,用于将所述差异信息发送至所述文件分块装置,并根据所述文件分块装置返回的重构所述本地文件A所需的数据信息更新所述本地文件A。
12.如权利要求11所述的装置,其特征在于:
对于增加字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和新增数据块的分块信息,以及后续数据块的分块信息和数据块的总块数;
对于删除字节,所述差异信息包括:第i个数据块的分块信息,或者,第i个数据块和第i+1个数据块的分块信息,以及后续数据块的分块信息和数据块的总块数。
13.如权利要求12所述的装置,其特征在于:
对于增加字节,如果在第i个数据块中增加k字节后,该数据块的长度小于等于K,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中增加k字节后,该数据块的长度大于K甚至nK,则所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述新增数据块的分块信息包括:新增数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号;
对于删除字节,如果在第i个数据块中删除k字节,不会删除至下一数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述后续数据块的分块信息包括:后续数据块的偏移值;如果在第i个数据块中删除k字节,会删除至下一数据块甚至删除至第j个数据块,所述第i个数据块的分块信息包括:第i个数据块的校验值和长度,所述第i+1个数据块的分块信息包括:第i+1个数据块的校验值、长度、偏移值和索引编号,所述后续数据块的分块信息包括:后续数据块的偏移值和索引编号。
14.如权利要求13所述的装置,其特征在于:
所述差异信息生成模块,用于将本地文件A的头文件SA和SB进行比对,生成SA和SB的差异信息,包括:
根据SA和SB计算文件B总数据块减去文件A总数据块的差值N;
从两个文件的第一个数据块开始比对,直到找到第一个校验值不同的两个数据块;
如果N=0,则记录文件B的该数据块的分块信息以及后续数据块的分块信息;
如果N为正整数,则记录文件B的该数据块、后续N个数据块以及第N个数据块之后的数据块的分块信息;
如果N为负整数,则记录文件B的该数据块、其后第(-N+1)个数据块及其后续的数据块的分块信息。
15.一种单文件同步系统,包括:如权利要求9~10所述的文件修改装置和如权利要求11~14所述的单文件同步装置;
其中,所述文件修改装置为服务器,所述单文件同步装置为客户端;或者,所述文件修改装置为客户端,所述单文件同步装置为服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410368093.3A CN104092780A (zh) | 2014-07-29 | 2014-07-29 | 基于文件分块的文件修改方法、单文件同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410368093.3A CN104092780A (zh) | 2014-07-29 | 2014-07-29 | 基于文件分块的文件修改方法、单文件同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104092780A true CN104092780A (zh) | 2014-10-08 |
Family
ID=51640460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410368093.3A Pending CN104092780A (zh) | 2014-07-29 | 2014-07-29 | 基于文件分块的文件修改方法、单文件同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104092780A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302604A (zh) * | 2015-06-05 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 数据传输方法及装置 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
WO2017113317A1 (zh) * | 2015-12-31 | 2017-07-06 | 深圳配天智能技术研究院有限公司 | 一种文件编辑方法和文件编辑器 |
CN111444138A (zh) * | 2019-01-16 | 2020-07-24 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及系统 |
CN111831323A (zh) * | 2020-05-29 | 2020-10-27 | 大数金科网络技术有限公司 | 容器化的增量持续交付方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094817A1 (en) * | 2008-10-14 | 2010-04-15 | Israel Zvi Ben-Shaul | Storage-network de-duplication |
CN101819602A (zh) * | 2010-05-07 | 2010-09-01 | 北京飞天诚信科技有限公司 | 一种数据文件引擎的实现方法 |
CN103428242A (zh) * | 2012-05-18 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种增量同步的方法、装置及系统 |
CN103873522A (zh) * | 2012-12-14 | 2014-06-18 | 联想(北京)有限公司 | 一种电子设备及应用于电子设备的文件分块方法 |
CN103942208A (zh) * | 2013-01-18 | 2014-07-23 | 联想(北京)有限公司 | 文件处理方法及装置 |
-
2014
- 2014-07-29 CN CN201410368093.3A patent/CN104092780A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094817A1 (en) * | 2008-10-14 | 2010-04-15 | Israel Zvi Ben-Shaul | Storage-network de-duplication |
CN101819602A (zh) * | 2010-05-07 | 2010-09-01 | 北京飞天诚信科技有限公司 | 一种数据文件引擎的实现方法 |
CN103428242A (zh) * | 2012-05-18 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种增量同步的方法、装置及系统 |
CN103873522A (zh) * | 2012-12-14 | 2014-06-18 | 联想(北京)有限公司 | 一种电子设备及应用于电子设备的文件分块方法 |
CN103942208A (zh) * | 2013-01-18 | 2014-07-23 | 联想(北京)有限公司 | 文件处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
汤晓迪等: "远程文件差异同步系统的设计与实现", 《计算机工程与设计》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302604A (zh) * | 2015-06-05 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 数据传输方法及装置 |
CN106302604B (zh) * | 2015-06-05 | 2020-09-11 | 腾讯科技(深圳)有限公司 | 数据传输方法及装置 |
WO2017113317A1 (zh) * | 2015-12-31 | 2017-07-06 | 深圳配天智能技术研究院有限公司 | 一种文件编辑方法和文件编辑器 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
CN111444138A (zh) * | 2019-01-16 | 2020-07-24 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及系统 |
CN111444138B (zh) * | 2019-01-16 | 2024-03-15 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及系统 |
CN111831323A (zh) * | 2020-05-29 | 2020-10-27 | 大数金科网络技术有限公司 | 容器化的增量持续交付方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108270874B (zh) | 应用程序的更新方法及装置 | |
CN104092780A (zh) | 基于文件分块的文件修改方法、单文件同步方法及装置 | |
US10565063B2 (en) | Virtual machine snapshot backup based on multilayer de-duplication | |
US9411685B2 (en) | Parity chunk operating method and data server apparatus for supporting the same in distributed raid system | |
US9916478B2 (en) | Data protection enhancement using free space | |
EP3051408B1 (en) | Data operating method and device | |
CN101741911B (zh) | 基于多副本协同的写操作方法、系统及节点 | |
US8972678B2 (en) | Efficient backup replication | |
US10346256B1 (en) | Client side cache for deduplication backup systems | |
CN110389859B (zh) | 用于复制数据块的方法、设备和计算机程序产品 | |
US20140222770A1 (en) | De-duplication data bank | |
CN109492049B (zh) | 用于区块链网络的数据处理、区块生成及同步方法 | |
CN104348884A (zh) | 一种云存储自动同步方法 | |
CN110727644A (zh) | 一种区块链数据裁剪的方法、系统及存储介质 | |
US11455100B2 (en) | Handling data slice revisions in a dispersed storage network | |
US8423556B2 (en) | Archive device | |
CN104536699A (zh) | 一种基于嵌入式文件系统的流式数据写入方法 | |
CN105589887A (zh) | 分布式文件系统的数据处理方法及分布式文件系统 | |
JP2019021284A (ja) | IoT装置がデータセンタでバックアップするための分散型重複データ削除記憶システム及びその分散型重複データ削除を実現する方法 | |
CN109445687A (zh) | 一种数据存储方法以及协议服务器 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
JP2019159785A (ja) | バックアップサーバ、バックアップ方法、プログラム、ストレージシステム | |
CN110874345A (zh) | 分布式存储系统中的数据处理方法、装置和系统 | |
CN109347935B (zh) | 一种基于区块链实现实时通讯消息同步的方法 | |
CN106293996B (zh) | 数据同步方法、主设备、备份设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141008 |
|
RJ01 | Rejection of invention patent application after publication |