CN105160253B - 修复客户端程序的方法、装置、系统及服务器 - Google Patents
修复客户端程序的方法、装置、系统及服务器 Download PDFInfo
- Publication number
- CN105160253B CN105160253B CN201510633533.8A CN201510633533A CN105160253B CN 105160253 B CN105160253 B CN 105160253B CN 201510633533 A CN201510633533 A CN 201510633533A CN 105160253 B CN105160253 B CN 105160253B
- Authority
- CN
- China
- Prior art keywords
- data block
- check code
- changed
- list
- file
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种修复客户端程序的方法,包括:当本地的客户端程序中被修改的文件大于阈值时,则将被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成被修改的文件的特征码列表;将生成的特征码列表发送给服务器,以请求获取被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,被修改的文件中被修改/删除了的数据块所对应的原始数据块由服务器将接收到的特征码列表与被修改的文件所对应的原始文件进行比对生成校验码列表后,将校验码列表与特征码列表进行比对确定;接收服务器返回的原始数据块以及校验码列表,并根据校验码列表将原始数据块对被修改的文件进行修复。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种修复客户端程序的方法、装置、系统及服务器。
背景技术
客户端程序在使用过程中,可能会由于文件系统错误导致文件损坏。另外,目前互联网上病毒和恶意程序较多,很容易出现客户端程序的文件被恶意程序篡改的情况,导致用户信息泄露。为了保证客户端程序的正常运行,有必要对客户端程序进行自动修复。
一种常见的方案是为每次修复时提供一个完整的安装包,用户下载并运行安装包执行修复和更新操作。这种方式需要将出错的客户端程序卸载后再重装安装包,同时下载完整安装包也需要较大的带宽成本,修复耗时较长,因此既浪费流量又浪费时间。
另一种方案是在确定客户端程序中需要修复的文件,根据需要修复的文件的相关信息从服务器中下载相应的整个原始文件来进行修复,从而不需要将客户端程序卸载并重新下载整个安装包进行重新安装,能够快速修复客户端程序中损坏的文件,在一定程度上能节省用户流量,并能达到快速修复的目的。
发明内容
经工程测试研究发现,现有技术中通过下载整个原始文件来对被篡改的文件进行修复的客户端程序修复方法,虽然避免了卸载并重新下载、安装的繁琐过程,但是对于占用空间较大的原始文件,在下载时依然会需要较大的带宽成本。而且,通常来说,客户端程序的文件被篡改的内容通常只占整个文件的一小部分,因此下载整个文件没有必要,只需下载被修改的部分即可,因此,利用现有技术将被篡改的文件的整个原始文件下载来进行修复仍然会存在浪费不必要的用户流量的问题。
为解决上述问题,本发明提出了一种理想的客户端程序修复,只需要下载客户端程序的文件被修改的部分内容即可。
为实现上述理想的客户端程序修复,本发明实施例的目的是提供一种修复客户端程序的方法、装置、系统及服务器,能够在确定客户端程序被修改的文件的情况下,只下载文件中被修改的数据,从而节省了大量的数据交互,减少宽带成本。
本发明实施例提供了一种修复客户端程序的方法,包括:
当本地的客户端程序中被修改的文件大于阈值时,则将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表;
将生成的所述特征码列表发送给所述服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定;
接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
本发明的另一实施例提供了一种修复客户端程序的方法,包括:
接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
本发明的另一实施例对应公开了一种修复客户端程序的装置,包括:
分块处理模块,用于当本地的客户端程序中被修改的文件大于阈值时,将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表;
发送模块,用于将生成的所述特征码列表发送给所述服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定;
修复模块,用于接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
本发明的另一实施例提供了一种服务器,包括:
接收模块,用于接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
发送模块,用于向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
本发明的另一实施例提供了一种修复客户端程序的系统,包括至少一个如上所述的修复客户端程序的装置以及如上所述的服务器。
本发明的另一实施例提供了一种修复客户端程序的方法,包括:
当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述
被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;
将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
本发明另一实施例提供了一种修复客户端程序的方法,包括:
接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定;
向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
本发明另一实施例对应提供了一种修复客户端程序的装置,包括:
第一请求发送模块,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
第二请求发送模块,用于向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;
修复模块,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
本发明另一实施例对应提供了一种服务器,其特征在于,包括:
第一请求接收模块,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
第一发送模块,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
第二请求接收模块,用于接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定;
第二发送模块,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
本发明另一实施例对应提供了一种修复客户端程序的系统,包括至少一个如上所述的修复客户端程序的装置以及如上所述的服务器。本发明另一实施例提供了一种修复客户端程序的方法,包括:
当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
向所述服务器发送所述校验码列表,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
本发明另一实施例提供了一种修复客户端程序的方法,包括:
接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
接收所述用户端发送的校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
本发明实施例对应提供了一种修复客户端程序的装置,包括:
第一请求发送模块,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
第二请求发送模块,用于向所述服务器发送所述校验码列表,以获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
修复模块,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
本发明另一实施例提供了一种服务器,包括:
第一请求接收模块,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
第一发送模块,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述用户端发送的校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
第二发送模块,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
本发明实施例对应提供了一种修复客户端程序的系统,包括至少一个如上所述的修复客户端程序的装置以及如上所述的服务器。
与现有技术相比,本发明公开的修复客户端程序的方法、装置、系统及服务器通过将大于一定值的客户端程序中被修改的文件进行分块后计算各个分块的特征信息,将分块的特征信息与原始文件的特征信息进行对比后找出被修改的数据块,并下载被修改的数据块来对客户端程序中被修改的文件进行修复,从而节省了大量的数据交互,极大减少了修复过程中的带宽占用。
附图说明
图1是本发明实施例1中一种修复客户端程序的方法的流程示意图。
图2是本发明实施例2中一种修复客户端程序的方法的流程示意图。
图3是本发明实施例3中一种修复客户端程序的装置的结构框图。
图4是本发明实施例4中一种服务器的结构框图。
图5是本发明实施例5中一种修复客户端程序的系统的结构框图。
图6是本发明实施例6中一种修复客户端程序的方法的流程示意图。
图7是本发明实施例7中一种修复客户端程序的方法的流程示意图。
图8是本发明实施例8中一种修复客户端程序的装置的结构框图。
图9是本发明实施例9中一种服务器的结构框图。
图10是本发明实施例10中一种修复客户端程序的系统的结构框图。
图11是本发明实施例11中一种修复客户端程序的方法的流程示意图。
图12是本发明实施例12中一种修复客户端程序的方法的流程示意图。
图13是本发明实施例13中一种修复客户端程序的装置的结构框图。
图14是本发明实施例14中一种服务器的结构框图。
图15是本发明实施例15中一种修复客户端程序的系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例1提供的一种修复客户端程序的方法的流程示意图。其中,该方法是针对在发现客户端程序的文件被修改(恶意篡改,例如,由于病毒感染)的情况下,需要向服务器提取该文件的原始文件来进行修复而描述。该方法包括步骤:
S101、当本地的客户端程序中被修改的文件大于阈值时,则将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表。
其中,所述本地是指用户端,所述客户端程序中“被修改的文件”往往是指恶意篡改的文件,具体的包括修改文件中的部分数据或者删除文件中的部分数据。所述阈值的大小可由根据实际情况设定,而特征值的计算可采用常用的算法。
下面,以阈值为1MB、采用MD5算法计算特征值为例,对本实施例的分块处理进行更详细的描述。对于超过1MB的被修改的文件F1,则将被修改的文件F1按照1MB大小划分成多个数据块,然后使用MD5算法对每个数据块计算其特征值,最终得到所述被修改的文件F1的特征码列表(MD5特征码列表),例如F1={M1,M2,M3,M4,M5}。
S102、将生成的所述特征码列表发送给所述服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定。
其中,所述原始文件具体指所述被修改的文件的最初文件(即没有进行过任何修改的原始状态)。用户端可将客户端程序的版本号随同所述特征码列表一同发给所述服务器。这样,可保证服务器端能够找到对应的原始文件。
具体的,用户端将上述生成的所述被修改的文件F1的特征码列表F1={M1,M2,M3,M4,M5}发送给服务器后,服务器将所述特征码列表与所述被修改的文件F1的原始文件f1进行比对,得到校验码列表。例如,得到的校验码列表f1={D0,M1,M2,D3,M4,M5}。其中,M1、M2、M4、M5均与用户端发送的特征码列表F1中的特征值一致,表示所述被修改的文件F1中第1/2/4/5数据分块均没有任何修改。D0表示所述被修改的文件F1文件开头删除了部分数据,D3表示所述被修改的文件F1中第3块数据发生修改。因此,服务器需要将校验码列表f1={D0,M1,M2,D3,M4,M5}以及D0以及D3对应的这两块完整数据块返回给客户端。
需要说明的是,此处的D0、D3对应的两块完整数据块分别是指一个连续的数据块,且不受如前所述的阈值(1MB)大小限制。
可以理解的,当用户端确定本地的客户端程序中被修改的文件不止一个时,可以生成需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名,并将所述需修复文件信息列表与每个被修改的文件的特征码列表一起发给服务器,以请求获取每一个所述被修改的文件中被修改/删除了的数据块所对应的原始数据块。其中,所述需修复文件信息列表可采用数组结构,如下表所示:
Char a[]={“dlls/sec1.dll”,“dlls/sec3.dll”};
其中,“dlls/sec1.dll”,“dlls/sec3.dll”为对应的每个被修改的文件的路径(包括文件名)。
S103、接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
具体的,当用户端接收所述服务器返回的所述原始数据块以及校验码列表后,根据所述校验码列表将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
例如,如前所述,当用户端接收到所述校验码列表f1={D0,M1,M2,D3,M4,M5}以及D0以及D3这两块完整数据块时,可以根据M1、M2、M4、M5从被修改的文件F1中找到相应的数据块,并和D0、D3按照顺序(根据校验码列表)组合成新的文件F1’,此处的F1’即为分块更新后的完整文件。构建一个完整的文件后,将该文件保存在待更新区。在如前所示的例子中,用户端接收服务端返回的数据块只有被删除的D0和被修改的D3,其余的第1/2/4/5数据分块则只接收到数据块的特征值,因此节省了大量的数据交互。
其中,所述待更新区是指一个目录,用于存放从服务端下载的数据后构建形成的用于更新本地数据的完整文件。需要说明的是,当用户端确定本地的客户端程序中被修改的文件少于阈值时,则无需对文件进行分块处理,可直接向服务器请求下载所述被修改的文件对应的整个原始文件并保存到待更新区。
在利用所述待更新区的每个最新的完整文件对被修改的文件进行相应修复时,需要启动文件更新器。对于待更新区的每个文件,文件更新器先将目标文件(即被修改的文件)备份到备份区,并执行文件替换操作。
所述文件更新器是一个独立的程序文件,用于执行文件更新操作。由于文件更新器也有可能被修改,因此待全部数据下载并构建完整的文件后,需要先判断其中是否包含文件更新器。程序在运行时无法被修改,因此如果待更新区包含文件更新器,则需要先由客户端主程序对文件更新器执行替换操作。
主程序启动文件更新器后自行退出,而文件更新器启动以后,需要保证主程序已经完成退出。如果主程序没有退出,那么文件更新器在更新主程序文件的时候将会失败。为了实现所述等待客户端主程序退出的功能,主程序在启动文件更新器时需要将自己的PID(Process Identity)通过命令行参数的方式传给文件更新器程序,文件更新器根据PID来判断主程序是否还处于运行状态。判断的具体方式为:文件更新器根据PID判断该进程是否在运行,如果进程未退出,文件更新器需要等待预设时长5秒,再尝试检测过程。重试3次以后,如果主程序还在运行,则文件更新器需要提示用户修复失败,并退出修复过程。
所述备份区是指一个目录,用于存放旧版本的文件(即被修改的文件)。在执行文件替换操作时,如果被替换的目标文件(即被修改的文件)处于繁忙状态,可能会导致替换失败。在替换失败的情况下,文件更新器需要等待一段时间后再进行重试。重试的次数为3次,重试的间隔为5秒。如果超出指定的重试次数,则本次修复失败,需要显示出错信息来提示用户。
上述等待主程序退出和替换文件失败时,需要退出修复过程。在实际操作过程中,可以暂停修复操作,提示用户检查目标文件是否处于打开或锁定状态,等用户关闭文件或解锁文件以后再重新尝试步骤替换修复操作。
上述退出修复过程时,由于客户端可能有部分文件已经被更新,为了保证程序文件的一致性,需要对更新过程执行回滚操作。回滚操作的步骤如下:对于备份区中的每一个文件,使用该文件替换程序目录下的同名对应文件(即将旧版本的文件恢复)。所有文件替换完成后,清理备份区,回滚操作完成。
待更新区的所有文件完成替换操作以后,文件更新器清理待更新区和备份区,启动主程序并自行退出,客户端程序修复完成。
本实施例公开的修复客户端程序的方法通过将客户端程序中大于阈值的被修改的文件进行分块处理并计算各个分块的特征信息,以生成被修改的文件的特征码列表,然后将特征码列表发送给服务器,通过服务器将所述特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;并接收所述服务器返回的所述原始数据块以及校验码列表,然后根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复,从而节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图2,是本发明实施例2公开的一种修复客户端程序的方法的流程示意图。其中,该方法是针对接收用户端请求提取原始文件对客户端程序中的被修改的文件(恶意篡改,例如,由于病毒感染)进行修复而描述的,该方法包括步骤:
S201、接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成。
其中,所述客户端程序中“被修改的文件”往往是指恶意篡改的文件,具体的包括修改文件中的部分数据或者删除文件中的部分数据。所述阈值的大小可由根据实际情况设定,而特征值的计算可采用常用的算法。例如,本实施例中的阈值为1MB,特征值的计算采用MD5算法。
当接收到用户端发送被修改的文件的特征码列表时,表示所述被修改的文件大于阈值(例如,1MB)。
可以理解的,当用户端的客户端程序中被修改的文件不止一个时,接收到用户端发送的特征码列表不止一个时,还会同时接收到需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名,每个所述特征码列表对应一个所述被修改的文件。其中,所述需修复文件信息列表可采用数组结构,如下表所示:
Char a[]={“dlls/sec1.dll”,“dlls/sec3.dll”};
其中,“dlls/sec1.dll”,“dlls/sec3.dll”为对应的每个被修改的文件的路径(包括文件名)。
而每个文件的特征码列表的生成过程可以参数实施例1,在此不再赘述。
S202、将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块。
具体的,所述将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表具体包括如下过程:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
例如,当接收到用户端发送个一个被修改的文件F1的特征码列表为F1={M1,M2,M3,M4,M5}时,首先可根据该被修改的文件F1的文件名找出其对应的原始文件f1,然后对原始文件f1执行查找操作,以找到被修改/删除了的数据块,具体的查找过程如下:从原始文件f1的第0个字节开始,利用MD5算法先计算第一个1MB数据块的校验码N1,如果N1和M1相同,则表示找到第一个数据块,将M1加入到校验码列表中,即f1={M1}。如果N1和M1不同,则向后移一个字节,在计算从第1个字节开始的1MB数据块的校验码N1,如此循环,直到找到N1==M1的第N个字节为止,此时利用MD5计算第0个字节到第N-1字节之间的数据块的校验值D0,将D0加入到校验码列表中,即f1={D0,M1}。通过如上方式进行查找,然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,得到与M2相同的校验值,则将M2加入校验码列表中,即f1={D0,M1,M2};然后,若从剩下的数据块第0个字节开始遍历后续所有字节均没有找到与所述特征码列表的M3相同的校验码时,则找出与所述特征码列表的M4相同的校验码所在的字节,例如,在第Q个字节找到,那么对剩余的数据块从第0个字节到第Q-1个字节计算得到校验值D3,则将D3加入校验码列表中,即f1={D0,M1,M2,D3};最后,在剩余的数据块中查依次找到与M4、M5相同的校验值,则将M4、M5加入校验码列表中,即f1={D0,M1,M2,D3,M4,M5},为所述校验码列表。
在生成所述校验码列表后,将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块。同样的,以上述例子说明,将校验码列表f1={D0,M1,M2,D3,M4,M5}与特征码列表F1={M1,M2,M3,M4,M5}进行比对,其中,校验码列表f1中的M1、M2、M4、M5均与用户端发送的特征码列表F1中的特征值一致,表示所述被修改的文件F1中第1/2/4/5数据分块均没有任何修改。D0表示所述被修改的文件F1文件开头删除了部分数据,D3表示所述被修改的文件F1中第3块数据发生修改。因此,服务器需要将校验码列表f1={D0,M1,M2,D3,M4,M5}以及D0以及D3对应的这两块完整数据块返回给客户端。
需要说明的是,此处的D0、D3对应的两块完整数据块分别是指一个连续的数据块,且不受如前所述的阈值(1MB)大小限制。
S203、向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
其中,所述用户端在接收到所述原始数据块以及校验码列表后对文件的修复过程参考上述实施例1。
本实施例公开的修复客户端程序的方法通过接收用户端发送的将客户端程序中大于阈值的被修改的文件进行分块处理并计算各个分块的特征信息后,生成的被修改的文件的特征码列表,并将接收的所述特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;最后将所述原始数据块以及校验码列表发送给用户端,使用户端根据所述校验码列表将所述原始数据块对所述被修改的文件完成修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图3,是本发明实施例3公开的一种修复客户端程序的装置3的结构框图,该装置包括:
分块处理模块301,用于当本地的客户端程序中被修改的文件大于阈值时,将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表;
发送模块302,用于将生成的所述特征码列表发送给所述服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定;
修复模块303,用于接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的装置的具体工作原理可参考实施例1,在此不再赘述。
参考图4,是本发明实施例4公开的一种服务器4的结构框图,该服务器包括:
接收模块401,用于接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块402,用于将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
发送模块403,用于向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的服务器的具体工作原理可参考实施例2,在此不再赘述。
参考图5,是本发明实施例5公开的一种修复客户端程序的系统,包括至少一个如实施例3所述的修复客户端程序的装置3以及如实施例4所述的服务器4。本实施例的系统的每个修复客户端程序的装置(用户端)从服务器中获取文件中被修改的部分数据来实现客户端程序的修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图6,是本发明实施例6的一种修复客户端程序的方法的流程示意图。其中,该方法是针对在发现客户端程序的文件被修改(恶意篡改,例如,由于病毒感染)的情况下,需要向服务器提取该文件的原始文件来进行修复而描述。该方法包括步骤:
S601、当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成。
其中,所述本地是指用户端,所述客户端程序中“被修改的文件”往往是指恶意篡改的文件,具体的包括修改文件中的部分数据或者删除文件中的部分数据。所述原始文件具体指所述被修改的文件的最初文件(即没有进行过任何修改的原始状态)。用户端可将客户端程序的版本号随同所述第一请求一同发给所述服务器。这样,可保证服务器端能够找到对应的原始文件。
所述阈值的大小可由根据实际情况设定,而特征值的计算可采用常用的算法。例如,所述服务器可以将所述原始元件按照1MB大小划分成多个数据块,,然后使用MD5算法对每个数据块计算其特征值,最终得到所述原始元件f1的特征码列表(MD5特征码列表),例如f1={M1,M2,M3,M4,M5}。
可以理解的,当用户端确定本地的客户端程序中被修改的文件不止一个时,所述第一请求中可以包含需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名,以请求获取每一个所述被修改的文件所对应的原始文件的特征码列表。其中,所述需修复文件信息列表可采用数组结构,如下表所示:
Char a[]={“dlls/sec1.dll”,“dlls/sec3.dll”};
其中,“dlls/sec1.dll”,“dlls/sec3.dll”为对应的每个被修改的文件的路径(主要包括文件名)。
S602、将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块。
其中,将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表具体包括如下过程:
步骤1、从所述被修改的文件的第0个字节开始,计算第一个阈值大小数据块的校验码;若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中,否则执行步骤2,;
步骤2、若所述校验码与所述特征码列表中的第二个特征值相同时,则将所述第二个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述被修改的文件的第1个字节开始的第一阈值大小数据块的校验码,如此循环,直到找到所述第一阈值大小数据块的校验码与所述特征码列表的第二个特征值相同的第N个字节时,则将所述被修改的文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述被修改的文件的所有字节均没有找到与所述特征码列表的第二个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第三个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
例如,当接收到服务器发送个一个被修改的文件F1的原始元件f1的特征码列表为f1={M1,M2,M3,M4,M5}时,对该被修改的文件F1执行查找操作,以找到被修改/删除了的数据块,具体的查找过程如下:从修改的文件F1的第0个字节开始,利用MD5算法先计算第一个1MB数据块的校验码N1,如果N1和M1相同,则表示找到第一个数据块,将M1加入到校验码列表中,即F1={M1}。如果N1和M1不同,则判断N1和M2是否相同,若相同,则将M2加入到校验码列表中,即F1={M2};若N1和M2不同,则向后移一个字节,在计算从第1个字节开始的1MB数据块的校验码N1,如此循环,直到找到N1==M1的第N个字节为止,此时利用MD5计算第0个字节到第N-1字节之间的数据块的校验值D0,将D0加入到校验码列表中,即F1={D0,M2}(可以理解的,若遍历所有字节均没有找到与所述特征码列表的M2相同的校验码时,则找出与所述特征码列表的M3相同的校验码所在的字节,依次类推)。通过如上方式进行查找,然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,得到与M3相同的校验值,则将M3加入校验码列表中,即F1={D0,M2,M3};然后,若从剩下的数据块第0个字节开始遍历后续所有字节均没有找到与所述特征码列表的M4相同的校验码时,则找出与所述特征码列表的M5相同的校验码所在的字节,例如,在第0个字节找到,那么将M5加入校验码列表中,即F1={D0,M2,M3,M5},为所述校验码列表。
在生成所述校验码列表后,将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块。同样的,以上述例子说明,将校验码列表F1={D0,M2,M3,M5}与特征码列表f1={M1,M2,M3,M4,M5}进行比对,其中,校验码列表F1中的M2、M3、M5均与服务器发送的特征码列表f1中的特征值一致,表示所述被修改的文件F1相对原始文件f1中的第2/3/5数据分块均没有任何修改。D0表示所述被修改的文件F1文件相对原始文件f1中的第1块数据发生修改。校验码列表中缺失的M4表示所述被修改的文件F1文件相对原始文件f1删除了第4块数据。
可见,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块(M1,M4)分别为连续的数据块,且大小为所述阈值或阈值的整数倍。
S603、向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求。
例如,仍如前述例子说明,所述第二请求中可包括每个被修改文件的差异码列表,例如,C1={M1,M4},表示向所述服务器发送获取所述被修改的文件所对应的原始文件中M1,M4对应的两个数据块。
S604、将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
具体的,当用户端接收所述服务器返回的所述原始数据块后,根据所述校验码列表将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
例如,如前所述,当用户端接收到服务器返回的M1以及M4这两块完整数据块时,可以根据校验码列表F1从被修改的文件F1中找到相应的数据块M2、M3、M5,并和M1、M4按照顺序(根据校验码列表)组合成新的文件F1’,此处的F1’即为更新后的完整文件。构建一个完整的文件后,将该文件保存在待更新区。在如前所示的例子中,用户端接收服务端返回的数据块只有被修改的M1和被删除的M4,因此节省了大量的数据交互。
利用文件更新器将所述待更新区的每个最新的完整文件对被修改的文件进行相应修复,详细请参考实施例1,在此省略描述。
本实施例的公开的修复客户端程序的方法通过向服务器获取客户端程序中大于阈值的被修改的文件所对应的原始文件的特征码列表,将特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块,从而向服务器获取所述原始数据块来对所述被修改的文件进行修复。因此,节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图7,是本发明实施例7公开的一种修复客户端程序的方法的流程示意图。其中,该方法是针对接收用户端请求提取原始文件对客户端程序中的被修改的文件(恶意篡改,例如,由于病毒感染)进行修复而描述的,该方法包括步骤:
S701、接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求。
其中,所述客户端程序中“被修改的文件”往往是指恶意篡改的文件,具体的包括修改文件中的部分数据或者删除文件中的部分数据。所述原始文件具体指所述被修改的文件的最初文件(即没有进行过任何修改的原始状态)。用户端可将客户端程序的版本号随同所述第一请求一同发给所述服务器。这样,可保证服务器端能够找到对应的原始文件。
当接收到用户端发送的所述第一请求时,表示所述被修改的文件大于阈值(例如,1MB)。
可以理解的,当用户端的客户端程序中被修改的文件不止一个时,接收到用户端发送的第一请求中包含需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名,以请求获取每一个所述被修改的文件所对应的原始文件的特征码列表。其中,所述需修复文件信息列表可采用数组结构,如下表所示:
Char a[]={“dlls/sec1.dll”,“dlls/sec3.dll”};
其中,“dlls/sec1.dll”,“dlls/sec3.dll”为对应的每个被修改的文件的路径(包括文件名)。
S702、向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成。
其中,所述阈值的大小可由根据实际情况设定,而特征值的计算可采用常用的算法。例如,所述服务器可以将所述原始元件按照1MB大小划分成多个数据块,然后使用MD5算法对每个数据块计算其特征值,最终得到所述原始元件f1的特征码列表(MD5特征码列表),例如f1={M1,M2,M3,M4,M5}。然后,将特征码列表发送给所述用户端。
S703、接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定。
其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的确定过程请参考上述实施例6。
具体的,所述第二请求中可包括每个被修改文件的差异码列表,例如,C1={M1,M4},表示所述用户端请求获取所述被修改的文件所对应的原始文件中M1,M4对应的两个数据块。
S704、向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
其中,所述用户端在接收到所述原始数据块以及校验码列表后对文件的修复过程参考上述实施例6。
本实施例公开的修复客户端程序的方法通过向用户端发送其请求获取的客户端程序中大于阈值的被修改的文件的原始文件的特征码列表后,通过用户端将特征码列表与被修改的文件进行比对生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;最后将所述原始数据块发送给用户端,使用户端根据所述校验码列表将所述原始数据块对所述被修改的文件完成修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图8,是本发明实施例8公开的一种修复客户端程序的装置8的结构框图,该装置包括:
第一请求发送模块801,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块802,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
第二请求发送模块803,用于向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;
修复模块804,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的装置的具体工作原理可参考实施例6,在此不再赘述。
参考图9,是本发明实施例9公开的一种服务器9的结构框图,该服务器包括:
第一请求接收模块901,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
第一发送模块902,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
第二请求接收模块903,用于接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定;
第二发送模块904,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的服务器的具体工作原理可参考实施例7,在此不再赘述。
参考图10,是本发明实施例10公开的一种修复客户端程序的系统,包括至少一个如实施例8所述的修复客户端程序的装置8以及如实施例9所述的服务器9。本实施例的系统的每个修复客户端程序的装置(用户端)从服务器中获取文件中被修改的部分数据来实现客户端程序的修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图11,是本发明实施例11的一种修复客户端程序的方法的流程示意图。其中,该方法是针对在发现客户端程序的文件被修改(恶意篡改,例如,由于病毒感染)的情况下,需要向服务器提取该文件的原始文件来进行修复而描述。该方法包括步骤:
S1101、当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
S1102、将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
S1103、向所述服务器发送所述校验码列表,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
S1104、将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
其中,本实施例公开的一种修复客户端程序的方法与实施例6的实现过程基本一致,不同的是,本实施例仅在用户端生成所述校验码列表,而将所述校验码列表发送给服务器,由服务器来判断所述被修改的文件中被修改/删除了的数据块,判断方法与实施例6相似,在此不再赘述。
本实施例公开的修复客户端程序的方法通过向服务器获取客户端程序中大于阈值的被修改的文件所对应的原始文件的特征码列表,将特征码列表与本地的所述被修改的文件进行比对后生成校验码列表后发送给服务器,通过服务器将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块,并接收所述服务器发送的所述原始数据块发送给对所述被修改的文件进行修复。因此,节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图12,是本发明实施例12公开的一种修复客户端程序的方法的流程示意图。其中,该方法是针对接收用户端请求提取原始文件对客户端程序中的被修改的文件(恶意篡改,例如,由于病毒感染)进行修复而描述的,该方法包括步骤:
S1201、接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
S1202、向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
S1203、接收所述用户端发送的校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
S1204、向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
其中,本实施例公开的一种修复客户端程序的方法与实施例7的实现过程基本一致,不同的是,本实施例仅在用户端生成所述校验码列表,而将所述校验码列表发送给服务器,由服务器来判断所述被修改的文件中被修改/删除了的数据块,判断方法与实施例6相似,在此不再赘述。
本实施例公开的一种修复客户端程序的方法通过向用户端发送其请求获取的客户端程序中大于阈值的被修改的文件的原始文件的特征码列表后,通过用户端将特征码列表与被修改的文件进行比对生成校验码列表,并将用户端返回的所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;最后将所述原始数据块发送给用户端,使用户端根据所述校验码列表将所述原始数据块对所述被修改的文件完成修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图13,是本发明实施例13公开的一种修复客户端程序的装置13的结构框图,该装置包括:
第一请求发送模块1301,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块1302,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
第二请求发送模块1303,用于向所述服务器发送所述校验码列表,以获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
修复模块1304,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的装置的具体工作原理可参考实施例11,在此不再赘述。
参考图14,是本发明实施例14公开的一种服务器的结构框图14,该服务器包括:
第一请求接收模块1401,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的检验码列表的第一请求;
第一发送模块1402,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块1403,用于将所述用户端发送的校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
第二发送模块1404,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复。
其中,本实施例的修复客户端程序的服务器的具体工作原理可参考实施例12,在此不再赘述。
参考图15,是本发明实施例15公开的一种修复客户端程序的系统,包括至少一个如实施例13所述的修复客户端程序的装置13以及如实施例14所述的服务器14。本实施例的系统的每个修复客户端程序的装置(用户端)从服务器中获取文件中被修改的部分数据来实现客户端程序的修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (65)
1.一种修复客户端程序的方法,其特征在于,包括:
当本地的客户端程序中被修改的文件大于阈值时,则将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表;
将生成的所述特征码列表发送给服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定;
接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
2.如权利要求1所述的修复客户端程序的方法,其特征在于,所述根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复具体包括:
根据所述校验码列表将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
3.如权利要求1或2所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个;所述将生成的所述特征码列表发送给所述服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块具体为:
将生成的所述特征码列表以及需修复文件信息列表发送给所述服务器,以请求获取每一所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述需修复文件信息列表包含每个被修改的文件的文件名。
4.如权利要求1所述的修复客户端程序的方法,其特征在于,所述阈值为1MB。
5.如权利要求1所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
6.如权利要求1所述的修复客户端程序的方法,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
7.一种修复客户端程序的方法,其特征在于,包括:
接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
8.如权利要求7所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个;所述接收用户端发送的特征码列表具体包括:
接收用户端发送的特征码列表和需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
9.如权利要求7所述的修复客户端程序的方法,其特征在于,所述阈值为1MB。
10.如权利要求7所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
11.如权利要求7所述的修复客户端程序的方法,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
12.一种修复客户端程序的装置,其特征在于,包括:
分块处理模块,用于当本地的客户端程序中被修改的文件大于阈值时,将所述被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成所述被修改的文件的特征码列表;
发送模块,用于将生成的所述特征码列表发送给服务器,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块由所述服务器将接收到的特征码列表与所述被修改的文件所对应的原始文件进行比对生成校验码列表后,将所述校验码列表与所述特征码列表进行比对确定;
修复模块,用于接收所述服务器返回的所述原始数据块以及校验码列表,并根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
13.如权利要求12所述的修复客户端程序的装置,其特征在于,所述修复模块具体用于:
根据所述校验码列表将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
14.如权利要求12或13所述的修复客户端程序的装置,其特征在于,所述被修改的文件至少为一个;所述发送模块具体用于:
将生成的所述特征码列表以及需修复文件信息列表发送给所述服务器,以请求获取每一所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述需修复文件信息列表包含每个被修改的文件的文件名。
15.如权利要求12所述的修复客户端程序的装置,其特征在于,所述阈值为1MB。
16.如权利要求12所述的修复客户端程序的装置,其特征在于,每个数据块的特征值通过MD5算法计算得到。
17.如权利要求12所述的修复客户端程序的装置,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
18.一种服务器,其特征在于,包括:
接收模块,用于接收用户端发送的特征码列表;其中,所述特征码列表为所述用户端将客户端程序中的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将接收到的所述特征码列表与所述被修改的文件所对应的原始文件进行对比生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,以确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
发送模块,用于向所述用户端发送所述原始数据块以及校验码列表,使所述用户端根据所述校验码列表将所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
19.如权利要求18所述的服务器,其特征在于,所述被修改的文件至少为一个;所述接收模块具体用于:
接收用户端发送的特征码列表和需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
20.如权利要求18所述的服务器,其特征在于,所述阈值为1MB。
21.如权利要求18所述的服务器,其特征在于,每个数据块的特征值通过MD5算法计算得到。
22.如权利要求18所述的服务器,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
23.一种修复客户端程序的系统,其特征在于,包括至少一个如权利要求12所述的修复客户端程序的装置以及如权利要求18所述的服务器。
24.一种修复客户端程序的方法,其特征在于,包括:
当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;
将所述服务器返回的所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
25.如权利要求24所述的修复客户端程序的方法,其特征在于,所述将所述服务器返回的所述原始数据块对所述被修改的文件进行修复具体包括:
将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
26.如权利要求24或25所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
27.如权利要求24所述的修复客户端程序的方法,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
28.如权利要求24所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
29.如权利要求24所述的修复客户端程序的方法,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且大小为所述阈值或阈值的整数倍。
30.一种修复客户端程序的方法,其特征在于,包括:
接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的特征码列表的第一请求;
向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定;
向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
31.如权利要求30所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
32.如权利要求30所述的修复客户端程序的方法,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
33.如权利要求30所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
34.一种修复客户端程序的装置,其特征在于,包括:
第一请求发送模块,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对,从而确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;
第二请求发送模块,用于向所述服务器发送获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;
修复模块,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
35.如权利要求34所述的修复客户端程序的装置,其特征在于,所述修复模块具体用于:
将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
36.如权利要求34或35所述的修复客户端程序的装置,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
37.如权利要求34所述的修复客户端程序的装置,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
38.如权利要求34所述的修复客户端程序的装置,其特征在于,每个数据块的特征值通过MD5算法计算得到。
39.如权利要求34所述的修复客户端程序的装置,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且大小为所述阈值或阈值的整数倍。
40.一种服务器,其特征在于,包括:
第一请求接收模块,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的特征码列表的第一请求;
第一发送模块,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
第二请求接收模块,用于接收所述用户端发送的获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块的第二请求;其中,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成校验码列表,并将所述校验码列表与所述特征码列表进行比对确定;
第二发送模块,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
41.如权利要求40所述的服务器,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
42.如权利要求40所述的服务器,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
43.如权利要求40所述的服务器,其特征在于,每个数据块的特征值通过MD5算法计算得到。
44.一种修复客户端程序的系统,其特征在于,包括至少一个如权利要求34所述的修复客户端程序的装置以及如权利要求40所述的服务器。
45.一种修复客户端程序的方法,其特征在于,包括:
当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
向所述服务器发送所述校验码列表,以请求获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
将所述服务器返回的所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
46.如权利要求45所述的修复客户端程序的方法,其特征在于,所述将所述服务器返回的所述原始数据块对所述被修改的文件进行修复具体包括:
将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
47.如权利要求45或46所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
48.如权利要求45所述的修复客户端程序的方法,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
49.如权利要求45所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
50.如权利要求45所述的修复客户端程序的方法,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且大小为所述阈值或阈值的整数倍。
51.一种修复客户端程序的方法,其特征在于,包括:
接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的特征码列表的第一请求;
向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
接收所述用户端发送的校验码列表,并将所述校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
52.如权利要求51所述的修复客户端程序的方法,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
53.如权利要求51所述的修复客户端程序的方法,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
54.如权利要求51所述的修复客户端程序的方法,其特征在于,每个数据块的特征值通过MD5算法计算得到。
55.一种修复客户端程序的装置,其特征在于,包括:
第一请求发送模块,用于当本地的客户端程序中被修改的文件大于阈值时,向服务器发送获取所述被修改的文件所对应的原始文件的特征码列表的第一请求;其中,所述特征码列表为通过所述服务器对所述原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述服务器返回的特征码列表与本地的所述被修改的文件进行比对后生成校验码列表;
第二请求发送模块,用于向所述服务器发送所述校验码列表,以获取所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述被修改的文件中被修改/删除了的数据块为所述服务器将所述校验码列表与所述特征码列表进行比对确定;
修复模块,用于将所述服务器返回的所述原始数据块对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
56.如权利要求55所述的修复客户端程序的装置,其特征在于,所述修复模块具体用于:
将所述服务器返回的所述原始数据块与所述被修改的文件中未发生数据修改的数据块重新构建新的完整文件,并将所述新的完整文件替换所述被修改的文件,从而完成对所述被修改的文件的修复。
57.如权利要求55或56所述的修复客户端程序的装置,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
58.如权利要求55所述的修复客户端程序的装置,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
59.如权利要求55所述的修复客户端程序的装置,其特征在于,每个数据块的特征值通过MD5算法计算得到。
60.如权利要求55所述的修复客户端程序的装置,其特征在于,所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且大小为所述阈值或阈值的整数倍。
61.一种服务器,其特征在于,包括:
第一请求接收模块,用于接收用户端发送获取客户端程序中被修改的文件的所对应的原始文件的特征码列表的第一请求;
第一发送模块,用于向所述用户端发送所述特征码列表;其中,所述特征码列表为通过对被修改的文件的所对应的原始文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成;
处理模块,用于将所述用户端发送的校验码列表与所述特征码列表进行比对确定所述被修改的文件中被修改/删除了的数据块所对应的原始数据块;其中,所述校验码列表为所述用户端将接收到的特征码列表与所述被修改的文件进行比对后生成;
第二发送模块,用于向所述用户端发送所述原始数据块;所述原始数据块被所述用户端用来对所述被修改的文件进行修复;
其中通过如下方法生成所述校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
62.如权利要求61所述的服务器,其特征在于,所述被修改的文件至少为一个,所述第一请求中包括需修复文件信息列表,所述需修复文件信息列表包含每个被修改的文件的文件名。
63.如权利要求61所述的服务器,其特征在于,所述阈值为1MB;所述被修改的文件中被修改/删除了的数据块所对应的原始数据块分别为连续的数据块,且不受所述阈值大小限制。
64.如权利要求61所述的服务器,其特征在于,每个数据块的特征值通过MD5算法计算得到。
65.一种修复客户端程序的系统,其特征在于,包括至少一个如权利要求55所述的修复客户端程序的装置以及如权利要求61所述的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510633533.8A CN105160253B (zh) | 2015-09-29 | 2015-09-29 | 修复客户端程序的方法、装置、系统及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510633533.8A CN105160253B (zh) | 2015-09-29 | 2015-09-29 | 修复客户端程序的方法、装置、系统及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105160253A CN105160253A (zh) | 2015-12-16 |
CN105160253B true CN105160253B (zh) | 2018-11-09 |
Family
ID=54801106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510633533.8A Active CN105160253B (zh) | 2015-09-29 | 2015-09-29 | 修复客户端程序的方法、装置、系统及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105160253B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630875A (zh) * | 2015-12-17 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 文件修复方法及装置 |
CN105739971B (zh) * | 2016-01-20 | 2019-03-08 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
CN107645357B (zh) * | 2016-07-20 | 2020-09-22 | 中兴通讯股份有限公司 | 传输文件不完整的恢复方法及装置 |
CN107682436A (zh) * | 2017-10-09 | 2018-02-09 | 武汉斗鱼网络科技有限公司 | 一种更新文件的方法、装置和设备 |
CN110737635B (zh) * | 2018-07-02 | 2023-02-10 | 深圳联友科技有限公司 | 一种数据分块方法 |
CN112541182B (zh) * | 2020-12-23 | 2022-11-04 | 苏州三六零智能安全科技有限公司 | 内核vfs层系统修复方法、装置、设备及存储介质 |
CN113536310A (zh) * | 2021-07-08 | 2021-10-22 | 浙江网商银行股份有限公司 | 一种代码文件的处理方法、检验方法、装置及电子设备 |
CN114416665B (zh) * | 2022-03-25 | 2022-06-10 | 苏州浪潮智能科技有限公司 | 一种数据一致性检测和修复的方法、装置及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458645A (zh) * | 2007-12-11 | 2009-06-17 | 英业达股份有限公司 | 计算机操作系统与其软件的文件数据修复系统及其方法 |
CN102790790A (zh) * | 2011-10-21 | 2012-11-21 | 北京安天电子设备有限公司 | 快速获取web服务器文件完整性的校验系统及方法 |
CN102902604A (zh) * | 2012-09-28 | 2013-01-30 | 北京奇虎科技有限公司 | 一种用于修复文件的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7421551B2 (en) * | 2006-02-03 | 2008-09-02 | Emc Corporation | Fast verification of computer backup data |
-
2015
- 2015-09-29 CN CN201510633533.8A patent/CN105160253B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458645A (zh) * | 2007-12-11 | 2009-06-17 | 英业达股份有限公司 | 计算机操作系统与其软件的文件数据修复系统及其方法 |
CN102790790A (zh) * | 2011-10-21 | 2012-11-21 | 北京安天电子设备有限公司 | 快速获取web服务器文件完整性的校验系统及方法 |
CN102902604A (zh) * | 2012-09-28 | 2013-01-30 | 北京奇虎科技有限公司 | 一种用于修复文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105160253A (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105160253B (zh) | 修复客户端程序的方法、装置、系统及服务器 | |
US10776396B2 (en) | Computer implemented method for dynamic sharding | |
CN102959518B (zh) | 把文件系统恢复到目标存储器的计算机执行的方法和系统 | |
JP6236533B2 (ja) | 差分アップデートパッケージの作成方法及び装置、システム差分アップデート方法及び装置 | |
CN105446829A (zh) | 客户端程序的修复方法、装置、系统及服务器 | |
CN104918114B (zh) | 一种操作系统升级方法及装置 | |
EP3814931A1 (en) | Fast migration of metadata | |
JP5466459B2 (ja) | 階層ストレージ管理(hsm)制御ストレージ環境で双方向オーファン照合を行う方法、システムおよぶコンピュータ・プログラム | |
CN106302753A (zh) | 客户端程序增量更新的方法及系统 | |
CN107003935A (zh) | 优化数据库去重 | |
CN105677736A (zh) | 一种增加、删除服务器节点的方法及装置 | |
CN106406754A (zh) | 数据迁移方法及装置 | |
CN106610839A (zh) | 发布升级包的方法、轻量升级方法、装置及系统 | |
US8578359B2 (en) | Method and apparatus for reliable in-place update | |
CN110163009A (zh) | Hdfs存储平台的安全校验及修复的方法和装置 | |
CN106250548A (zh) | 一种代码更新方法 | |
CN102833273A (zh) | 临时故障时的数据修复方法及分布式缓存系统 | |
CN111651426A (zh) | 数据迁移方法、装置及计算机可读存储介质 | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 | |
CN107193582B (zh) | 发布方法及系统 | |
CN114391136A (zh) | 增强的虚拟机镜像管理系统 | |
CN110807000B (zh) | 一种文件修复方法、装置、电子设备和存储介质 | |
CN108377198B (zh) | 一种基于云平台的节点配置统一批量维护方法 | |
CN106775802B (zh) | 海量小文件快速更新的方法及其系统 | |
CN111770158B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |