CN105446829A - 客户端程序的修复方法、装置、系统及服务器 - Google Patents
客户端程序的修复方法、装置、系统及服务器 Download PDFInfo
- Publication number
- CN105446829A CN105446829A CN201510633248.6A CN201510633248A CN105446829A CN 105446829 A CN105446829 A CN 105446829A CN 201510633248 A CN201510633248 A CN 201510633248A CN 105446829 A CN105446829 A CN 105446829A
- Authority
- CN
- China
- Prior art keywords
- file
- client
- list
- modified
- side program
- 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
Abstract
本发明公开了一种客户端程序的修复方法,包括:当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。本发明实施例还公开了一种客户端程序的修复装置、系统及服务器。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种客户端程序的修复方法、装置、系统及服务器。
背景技术
客户端程序在使用过程中,可能会由于文件系统错误导致文件损坏。另外,目前互联网上病毒和恶意程序较多,很容易出现客户端程序的文件被恶意程序篡改的情况,导致用户信息泄露。为了保证客户端程序的正常运行,有必要对客户端程序进行自动修复。
一种常见的方案是为每次客户端程序修复时提供一个完整的安装包,用户下载并运行安装包执行修复和更新操作。这种方式需要用户手动操作,用户体验较差,同时下载完整安装包也需要较大的带宽成本,修复耗时较长。另一种方案是在用户安装客户端程序后,将安装文件保存在一个隐藏文件夹,需要修复使用隐藏的安装文件执行修复操作。这种方式需要在用户磁盘保存额外的数据文件,在安装文件较大的情况下对用户磁盘空间的浪费十分严重。
发明内容
经工程测试研究发现,现有技术的两种方案均没有自动检测客户端程序是否需要进行修复,判断是否需要修复通常是用户根据程序的行为来进行人工判断,而通常用户发现客户端程序行为异常的时候系统已经受到了恶意程序的影响。对于一些处理敏感数据的客户端程序来说,通常只能在造成实际损失的情况下用户才能发现异常,这时再执行修复操作为时已晚。
为解决上述问题,本发明提出了一种理想的客户端程序修复,能够自动检测客户端程序是否需要进行修复,使客户端程序具备自我修复能力。
为实现上述理想的客户端程序修复,本发明实施例提供一种客户端程序的修复方法、装置、系统及服务器,能够有效降低用户修复客户端程序时所需要的带宽成本,减少用户修复所需要占用的磁盘空间,并能够使客户端程序具备自我修复能力。
本发明实施例提供了一种客户端程序的修复方法,包括:
当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;
将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;
向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;
将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
本发明实施例还提供了一种客户端程序的修复方法,包括:
接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成;
向所述用户端发送所述第一文件信息列表;
接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定;
向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
本发明实施例相应提供了一种客户端程序的修复装置,其特征在于,包括:
第一请求发送模块,用于当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;
处理模块,用于将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;
第二请求发送模块,用于向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;
修复模块,用于将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
本发明实施例还相应提供了一种服务器,包括:
第一请求接收模块,用于接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成;
第一发送模块,用于向所述用户端发送所述第一文件信息列表;
第二请求接收模块,用于接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定;
第二发送模块,用于向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
本发明实施例还提供了一种修复客户端程序的系统,包括至少一个如上所述的修复客户端程序的装置以及如上所述的服务器。
与现有技术相比,本发明公开的客户端程序的修复方法、装置、系统及服务器,通过在响应启动客户端程序的操作时即对客户端程序的完整性进行检测,具体为向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对,从而确定用户端的所述客户端程序需要修复的文件,并向服务器下载所述需要修复的文件所对应的原始文件/最新文件以对客户端程序进行修复。本发明在实施时,仅根据需要修复的文件的相关信息从服务器中下载相应的原始文件(整个/部分文件数据)来进行修复,不需要下载整个安装包进行重新安装,能够有效减少修复过程中的带宽占用;另外,除了需要在下载数据以后临时保存文件以外,并不需要占用额外的磁盘空间,因此可减少用户修复所需要占用的磁盘空间;最后且最重要的是,在本发明的实施例中,每当客户端程序启动以后需要先进行完整性检查,自动检测客户端程序是否需要进行修复,使客户端程序具备自我修复能力,从而保证了客户端程序安全、正常的运行,避免了客户端文件被篡改导致的后果。
附图说明
图1是本发明实施例1中一种修复客户端程序的方法的流程示意图。
图2是本发明实施例2中一种修复客户端程序的方法的分块处理过程示意图。
图3是本发明实施例3中一种修复客户端程序的方法的流程示意图。
图4是本发明实施例4中一种修复客户端程序的方法的数据处理过程示意图。
图5是本发明实施例5中一种修复客户端程序的装置的结构框图。
图6是本发明实施例6中一种修复客户端程序的装置的结构框图。
图7是本发明实施例7中一种服务器的结构框图。
图8是本发明实施例8中一种服务器的结构框图。
图9是本发明实施例9中一种修复客户端程序的系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种客户端程序的修复方法的流程示意图。其中,该方法是针对在响应客户端程序启动以后自动对客户端程序进行完整性检查,以确定是否需要向服务器提取客户端程序中需要修复的文件的原始文件来进行修复。该方法包括步骤:
S101、当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求。
具体的,在客户端程序启动完成后,立即启动客户端完整性检查。首先读取本地的客户端程序配置文件,以获取服务端上所述客户端程序的原始/最新版本的文件清单的地址,然后根据该地址向服务端请求获取所述客户端程序的原始/最新版本的文件信息列表L1(第一文件信息列表)。所述文件信息列表L1包含了所述客户端程序的原始/最新版本中的每个文件的文件名和特征信息。
所述文件信息列表L1可采用哈希表结构,例如,如下表1所示:
文件路径(Key) | 特征信息(value) |
dlls/sec.dll | V0 |
dlls/sec1.dll | V1 |
dlls/sec2.dll | V2 |
dlls/sec3.dll | V3 |
dlls/sec4.dll | V4 |
表1-文件信息列表L1
其中,哈希表的Key为每个文件的文件名(相对文件路径),例如“dlls/sec.dll”,表示该文件在软件目录下的位置。哈希表的Value为每个文件的特征信息。文件的特征信息的生成方式有多种,比较常见的方式是使用MD5(MessageDigest5,信息摘要算法5)算法来生成每个文件的摘要信息作为特征信息。
另外,所述客户端程序的原始版本指的是所述客户端程序的最初版本(即没有进行过任何修改的原始状态);所述客户端程序的最新版本指的是客户端程序最新发布的版本。
用户端可将客户端程序的版本号随同所述第一请求一同发给所述服务器。这样,可保证服务器端能够找到对应的版本。当用户端随同所述第一请求发送的客户端程序的版本号为空时,则表示获取客户端程序的最新版本。
S102、将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件。
具体的,通过遍历本地的客户端程序目录,计算程序目录下所有文件的特征信息,从而生成包括每个文件的文件名和特征信息的文件信息列表L2(第二文件信息列表)。
其中,遍历客户端程序目录时还需要对子目录进行递归遍历。同时,客户端程序目录下还可能会有一些临时文件,例如程序运行Log、临时数据文件等等,这些文件通常有一些特定的后缀名,例如”.log“和“.tmp“等。可以根据这些后缀名对文件进行过滤,去除掉不需要修复的文件。
同样的,所述文件信息列表L2也可采用哈希表结构,例如,如下表2所示:
文件路径(Key) | 特征信息(value) |
dlls/sec.dll | V0 |
dlls/sec1.dll | V5 |
dlls/sec2.dll | V2 |
dlls/sec4.dll | V6 |
表2-文件信息列表L2
其中,哈希表的Key为每个文件的文件名(相对文件路径),例如“dlls/sec.dll”,表示该文件在软件目录下的位置。哈希表的Value为每个文件的特征信息。同样可使用MD5(MessageDigest5,信息摘要算法5)算法来生成每个文件的摘要信息作为特征信息。
在接收到服务器返回的文件信息列表L1后,即可将所述文件信息列表L1与本地生成的所述文件信息列表L2进行对比,从而确定本地的客户端程序中需要修复的文件,并生成需修复文件信息列表L3,所述需修复文件信息列表L3包含每个被删除或被修改的文件的文件名,L3可采用数组结构。具体过程如下:
若所述服务器返回的文件信息列表L1中的文件名不存在所述文件信息列表L2中,则所述文件名所对应的文件为所述被删除的文件;
若所述服务器返回的文件信息列表L1中的文件名存在所述文件信息列表L2中,但所述文件信息列表L1与文件信息列表L2中的所述文件名对应的特征信息不一致时,则本地所述文件名对应的文件为所述被修改的文件。
例如,以上述表1和表2为例说明,对于文件信息列表L1中的每个Key,例如为K,查找K是否在文件信息列表L2中。如果不在,则说明路径为K的文件丢失,将K加入到L3中。如果存在,则判断L2[K]和L1[K]是否相同,如果不同,说明路径为K的文件发生修改,将K加入到L3中。通过对比L1和L2可知,文件路径为“dlls/sec1.dll”、“dlls/sec4.dll”的文件发生修改,文件路径为“dlls/sec3.dll”的文件丢失,因此,将“dlls/sec1.dll”、“dlls/sec4.dll”、“dlls/sec3.dll”加入L3中,如表3所示:
L3={“dlls/sec1.dll”,“dlls/sec3.dll”,“dlls/sec4.dll”}
表3-需更新文件信息列表L3
可以理解的,在另一实施例中,所述需修复文件信息列表可分为被删除的文件修复信息列表L4以及被修改的文件修复信息列表L5;其中,所述被删除的文件修复信息列表包括每个被删除的文件的文件名;所述被修改的文件修复信息列表包含每个被修改的文件的文件名。例如,以前述例子说明,被删除的文件修复信息列表L4以及被修改的文件修复信息列表L5的结构如下表4、5所示:
L4={“dlls/sec3.dll”}
表4-被删除的文件修复信息列表L4
L5={“dlls/sec1.dll”,“dlls/sec4.dll”}
表5-被修改的文件修复信息列表L5
需要说明的是,所述客户端程序中“被修改的文件”往往是指恶意篡改的文件,具体的包括修改文件中的部分数据或者删除文件中的部分数据。
S103、向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求。
其中,所述原始文件具体指原始版本中所对应的最初文件(即没有进行过任何修改的原始状态)。所述最新文件具体指最新版本中所对应的最新文件。
在具体实施时,所述第二请求包含上述需修复文件信息列表,所述需修复文件信息列表包含每个被删除或被修改的文件的文件名,以获取所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
其中,对于“被修改的文件”,在通常情况下,较大的文件(例如,大于阈值)通常只被修改了一部分。因此,在另一优选实施例中,对于确定为被修改的文件后,还会对被修改的文件的大小进行判断,对于较大的文件则通过分块处理方式来获取被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块以进行修复。
例如,如前所述,对本地确定为被修改的文件“dlls/sec1.dll”,“dlls/sec4.dll”进行判断,其中,文件“dlls/sec1.dll”小于阈值,而文件“dlls/sec4.dll”大于阈值,那么,则无需对文件“dlls/sec1.dll”进行分块处理,可直接向服务器请求下载所述被修改的文件对应的整个原始文件进行修复,而需要对文件“dlls/sec4.dll”进行分块处理,以向服务器获取该文件中被修改/删除了的数据块所对应的原始/最新数据块以进行修复。
当判断本地被修改的文件大于阈值时,则执行如图2所示的过程,包括:
S1031、将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值,从而生成每个被修改的文件的特征码列表;
S1032、将生成的每个所述特征码列表随同需修复文件信息列表一同发送给所述服务器,以获取大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块;其中,所述大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,由所述服务器将接收到的所述特征码列表与所述被修改的文件所对应的原始/最新文件进行比对生成校验码列表后,将所述校验码列表与对应的所述特征码列表进行比对确定。
其中,所述阈值的大小可由根据实际情况设定,而特征值的计算可采用常用的算法。
下面,以阈值为1MB、采用MD5算法计算特征值为例,对本实施例的分块处理进行更详细的描述。对于超过1MB的被修改的文件F1,则将被修改的文件F1按照1MB大小划分成多个数据块,然后使用MD5算法对每个数据块计算其特征值,最终得到所述被修改的文件F1的特征码列表(MD5特征码列表),例如F1={M1,M2,M3,M4,M5}。
用户端将上述生成的所述被修改的文件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)大小限制。
S104、将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
具体的,当所述服务器返回的为本地被删除的文件所对应的整个原始文件/最新文件时,则根据原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上。
当所述服务器返回的为本地被修改的文件所对应的整个原始文件/最新文件时,且本地被修改的文件少于阈值时,则将对应的所述原始文件/最新文件对应替换本地被修改的文件。
当所述服务器返回的为本地每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块时,还会同时接收所述服务器发送的所述校验码列表,则根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。例如,如前所述,当用户端接收到所述校验码列表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(ProcessIdentity)通过命令行参数的方式传给文件更新器程序,文件更新器根据PID来判断主程序是否还处于运行状态。判断的具体方式为:文件更新器根据PID判断该进程是否在运行,如果进程未退出,文件更新器需要等待预设时长5秒,再尝试检测过程。重试3次以后,如果主程序还在运行,则文件更新器需要提示用户修复失败,并退出修复过程。
所述备份区是指一个目录,用于存放旧版本的文件(即需要修复的文件)。在执行文件替换操作时,如果被替换的目标文件(即需要修复的文件)处于繁忙状态,可能会导致替换失败。在替换失败的情况下,文件更新器需要等待一段时间后再进行重试。重试的次数为3次,重试的间隔为5秒。如果超出指定的重试次数,则本次修复失败,需要显示出错信息来提示用户。
上述等待主程序退出和替换文件失败时,需要退出修复过程。在实际操作过程中,可以暂停修复操作,提示用户检查目标文件是否处于打开或锁定状态,等用户关闭文件或解锁文件以后再重新尝试步骤替换修复操作。
上述退出修复过程时,由于客户端可能有部分文件已经被更新,为了保证程序文件的一致性,需要对更新过程执行回滚操作。回滚操作的步骤如下:对于备份区中的每一个文件,使用该文件替换程序目录下的同名对应文件(即将旧版本的文件恢复)。所有文件替换完成后,清理备份区,回滚操作完成。
待更新区的所有文件完成替换操作以后,文件更新器清理待更新区和备份区,启动主程序并自行退出,客户端程序自动修复完成。
本实施例公开的客户端程序的修复方法通过在响应启动客户端程序的操作时向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对,从而确定用户端的所述客户端程序需要修复的文件,并向服务器下载所述需要修复的文件所对应的原始文件/最新文件以对客户端程序进行修复,能够在客户端程序启动以后立即进行完整性检查,自动检测客户端程序是否需要进行修复,从而使客户端程序具备自我修复能力,保证了客户端程序安全、正常的运行。另外,对于大于一定值的客户端程序中被修改的文件,通过进行分块计算的方式找出被修改的数据块,并下载被修改的数据块所对应的原始/最新数据块来进行修复,因此节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图3,是本发明实施例公开的一种客户端程序的修复方法,包括:
S301、接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成。
其中,所述客户端程序的原始版本指的是所述客户端程序的最初版本(即没有进行过任何修改的原始状态);所述客户端程序的最新版本指的是客户端程序最新发布的版本。
所述第一请求中可包含用户端发送的客户端程序的版本号,这样,可根据所述版本号能够找到对应的版本。当用户端随同所述第一请求发送的客户端程序的版本号为空时,则表示要获取客户端程序的最新版本。
所述第一文件信息列表(文件信息列表L1)的结构请参考上述实施例,在此省略描述。
S302、向所述用户端发送所述第一文件信息列表。
S303、接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定。
其中,对于用户端如何将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对,以确定所述客户端程序需要修复的文件所对应的原始文件/最新文件的过程请参考上述实施例,在此不再赘述。
在具体实施时,所述第二请求包含上述需修复文件信息列表,所述需修复文件信息列表包含每个被删除或被修改的文件的文件名,以获取所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
其中,对于“被修改的文件”,在通常情况下,较大的文件(例如,大于阈值)通常只被修改了一部分。因此,在另一优选实施例中,对于确定为被修改的文件后,用户端还会对被修改的文件的大小进行判断,对于较大的文件则通过分块处理方式来获取被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块以进行修复。
具体的,用户端如何对大于阈值的被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值后生成特征码列表,特征码列表的具体生成过程请参考上述实施例。
因此,当接收到用户端发送被修改的文件的特征码列表时,则表示所述被修改的文件大于阈值(例如,1MB)。
当接收到用户端发送被修改的文件的特征码列表时,则执行如图4所示的过程,包括:
S3031、接收所述用户端随同所述第二请求发送的特征码列表,每一所述特征码列表为所述用户端将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块并计算出每个数据块的特征值后生成;
S3032、将每个被修改的文件的所述特征码列表与对应原始/最新文件进行对比生成校验码列表,并将所述校验码列表与对应的所述特征码列表进行比对,确定所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块。
其中,对于大于阈值的每个被修改的文件,通过以下步骤生成其校验码列表:步骤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)大小限制。
S304、向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
具体实施时,该步骤包括:
向所述用户端发送所述需修复文件信息列表中每个被删除的文件的所对应的整个原始文件/最新文件,使所述用户端根据所述原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件所对应的整个原始文件/最新文件,且每个被修改的文件少于阈值,使所述用户端将所述原始文件/最新文件对应替换所述被修改的文件;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,并同时发送生成的每一所述校验码列表,使所述用户端根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。
而所述用户端通过将接收到所述服务器返回的每个被删除/修改的文件所对应的整个原始文件/最新文件,或者每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块对客户端程序进行修复的过程,请参考上述实施例,此处不再赘述。
本发明实施例公开的一种客户端程序的修复方法能够在实现客户端程序的自动检测修复能力,保证了客户端程序安全、正常的运行,而且节省了大量的数据交互,极大减少了修复过程中的带宽占用。
参考图5,是本发明实施例公开的一种客户端程序的修复装置5的结构框图,该装置包括:
第一请求发送模块501,用于当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;
处理模块502,用于将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;
第二请求发送模块503,用于向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;
修复模块504,用于将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
参考图6,是本发明公开的另一种客户端程序的修复装置6的结构框图,该装置6与装置5的结构基本一致,不同在于,本实施例的修复装置6还包括:
判断模块605,用于判断每个所述被修改的文件是否大于阈值;
分块处理模块606,用于将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值,从而生成每个被修改的文件的特征码列表。
所述第二请求发送模块603进一步用于:将生成的每个所述特征码列表随同需修复文件信息列表一同发送给所述服务器,以获取大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块;其中,所述大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,由所述服务器将接收到的所述特征码列表与所述被修改的文件所对应的原始/最新文件进行比对生成校验码列表后,将所述校验码列表与对应的所述特征码列表进行比对确定。
其中,实施例5、6的修复客户端程序的装置的具体工作原理可参考上述实施例1、2,在此不再赘述。
参考图7,是本发明实施例公开的一种服务器7的结构框图,该服务器包括:
第一请求接收模块701,用于接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成;
第一发送模块702,用于向所述用户端发送所述第一文件信息列表;
第二请求接收模块703,用于接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定;
第二发送模块704,用于向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
参考图8,是本发明公开的另一种服务器8的结构框图,该服务器8与服务器7的结构基本一致,不同在于,当客户端程序中被修改的文件大于阈值时,本实施例的服务器8中的所述第二请求接收模块803还用于:
接收所述用户端随同所述第二请求发送的特征码列表,每一所述特征码列表为所述用户端将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块并计算出每个数据块的特征值后生成;
所述服务器8还包括:
处理模块805,用于将每个被修改的文件的所述特征码列表与对应原始/最新文件进行对比生成校验码列表,并将所述校验码列表与对应的所述特征码列表进行比对,确定所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块。
所述第二发送模块804还用于将每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块以及生成的每个所述校验码列表一起发送给用户端。
其中,实施例7、8公开的服务器的具体工作原理(过程)可参考上述实施例3、4,在此不再赘述。
参考图9,是本发明实施例公开的一种修复客户端程序的系统,包括至少一个如图5或6所示的修复客户端程序的装置5/6以及如图7或8所示的服务器7/8。本实施例的系统的每个修复客户端程序的装置(用户端)能够在启动客户端程序后,自动从服务器中获取整个文件或文件中被修改的部分数据来实现客户端程序的修复,因此具备自我修复的能力,且在修复过程中节省了大量的数据交互,极大减少了修复过程中的带宽占用。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (55)
1.一种客户端程序的修复方法,其特征在于,包括:
当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;
将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;
向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;
将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
2.如权利要求1所述的客户端程序的修复方法,其特征在于,所述第一文件信息列表包含所述客户端程序的原始/最新版本中的每个文件的文件名和特征信息,所述第二文件信息列表包含本地的所述客户端程序中的每个文件的文件名和特征信息;所述客户端程序需要修复的文件包括被删除的文件和被修改的文件;
所述将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,确定本地的所述客户端程序需要修复的文件具体包括:
若所述服务器返回的第一文件信息列表中的文件名不存在所述第二文件信息列表中,则所述文件名所对应的文件为所述被删除的文件;
若所述服务器返回的第一文件信息列表中的文件名存在所述第二文件信息列表中,但所述第一文件信息列表与第二文件信息列表中的所述文件名对应的特征信息不一致时,则本地所述文件名对应的文件为所述被修改的文件。
3.如权利要求2所述的客户端程序的修复方法,其特征在于,所述文件信息列表采用哈希表结构,所述哈希表的Key为每个文件的文件名,所述哈希表的Value为每个文件的特征信息。
4.如权利要求3所述的客户端程序的修复方法,其特征在于,所述第一文件信息列表和所述第二文件信息列表中的每个文件的特征信息采用MD5算法生成。
5.如权利要求2所述的客户端程序的修复方法,其特征在于,所述向所述服务器发送获取本地的所述客户端程序需要修复的文件所述对应的原始文件/最新文件的第二请求具体包括:
基于本地的所述客户端程序需要修复的文件生成需修复文件信息列表,所述需修复文件信息列表包含每个被删除或被修改的文件的文件名;
将所述需修复文件信息列表发送给所述服务器,以获取所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
6.如权利要求5所述的客户端程序的修复方法,其特征在于,所述需修复文件信息列表包括被删除的文件修复信息列表以及被修改的文件修复信息列表;其中,所述被删除的文件修复信息列表包括每个被删除的文件的文件名;所述被修改的文件修复信息列表包含每个被修改的文件的文件名。
7.如权利要求5或6所述的客户端程序的修复方法,其特征在于,当本地被修改的文件大于阈值时,所述向所述服务器发送获取本地的所述客户端程序需要修复的文件所述对应的原始文件/最新文件的第二请求还包括:
将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值,从而生成每个被修改的文件的特征码列表;
将生成的每个所述特征码列表随同所述需修复文件信息列表一同发送给所述服务器,以获取大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块;其中,所述大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,由所述服务器将接收到的所述特征码列表与所述被修改的文件所对应的原始/最新文件进行比对生成校验码列表后,将所述校验码列表与对应的所述特征码列表进行比对确定。
8.如权利要求7所述的客户端程序的修复方法,其特征在于,所述阈值为1MB。
9.如权利要求7所述的客户端程序的修复方法,其特征在于,采用MD5算法计算出每个数据块的特征值。
10.如权利要求7所述的客户端程序的修复方法,其特征在于,所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块分别为连续的数据块,且不受所述阈值大小限制。
11.如权利要求7所述的客户端程序的修复方法,其特征在于,所述将所述服务器返回的所述原始文件/最新文件对所述客户端程序需要修复的文件进行修复具体包括:
当所述服务器返回的为本地被删除的文件所对应的原始文件/最新文件时,则根据原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上;
当所述服务器返回的为本地被修改的文件所对应原始文件/最新文件时,且本地被修改的文件少于阈值时,则将对应的所述原始文件/最新文件对应替换本地被修改的文件;
当所述服务器返回的为本地每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块时,还会同时接收所述服务器发送的所述校验码列表,则根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。
12.如权利要求1所述的客户端程序的修复方法,其特征在于,通过启动文件更新器将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
13.如权利要求1所述的客户端程序的修复方法,其特征在于,还包括:
判断所述服务器返回的所述原始文件/最新文件中是否包括所述客户端程序的第一件文件更新器;
若是,则通过已启动的所述客户端程序将所述第一件文件更新器替换本地的客户端程序的第二文件更新器后,启动所述第一件文件更新器来完成所述客户端程序的修复过程;
若否,则启动所述第二文件更新器来完成所述客户端程序的修复过程。
14.如权利要求13所述的客户端程序的修复方法,其特征在于,在启动所述第一文件更新器或第二文件更新器后,将已启动的所述客户端程序退出。
15.如权利要求1、13或14所述的客户端程序的修复方法,其特征在于,所述将所述服务器返回的所述原始文件/最新文件对所述客户端程序需要修复的文件进行修复具体包括:
将所述服务器返回的所述原始文件/最新文件存储到待更新区,对于所述待更新区的每个文件,将对应的所述客户端程序需要修复的文件备份到备份区,并将所述待更新区的每个文件替换对应的所述客户端程序需要修复的文件;
若对所述客户端程序的修复操作失败时,则利用所述备份区中的每个文件对所述客户端程序已修复的部分文件进行回滚操作。
16.如权利要求1所述的客户端程序的修复方法,其特征在于,所述第一请求中包含所述客户端程序的版本号;当所述版本号为空时,则表示向所述服务器发送获取最新版本的所述客户端程序的第一文件信息列表。
17.一种客户端程序的修复方法,其特征在于,包括:
接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成;
向所述用户端发送所述第一文件信息列表;
接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定;
向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
18.如权利要求17所述的客户端程序的修复方法,其特征在于,所述第一文件信息列表包含所述客户端程序的原始/最新版本中的每个文件的文件名和特征信息,所述第二文件信息列表包含用户端的所述客户端程序中的每个文件的文件名和特征信息;用户端的所述客户端程序需要修复的文件包括被删除的文件和被修改的文件;
若所述用户端接收的第一文件信息列表中的文件名不存在所述第二文件信息列表中,则所述文件名所对应的文件为所述被删除的文件;
若所述用户端接收的第一文件信息列表中的文件名存在所述第二文件信息列表中,但所述第一文件信息列表与第二文件信息列表中的所述文件名对应的特征信息不一致时,则用户端所述文件名对应的文件为所述被修改的文件。
19.如权利要求18所述的客户端程序的修复方法,其特征在于,所述第一文件信息列表和第二文件信息列表均采用哈希表结构,所述哈希表的Key为每个文件的文件名,所述哈希表的Value为每个文件的特征信息。
20.如权利要求19所述的客户端程序的修复方法,其特征在于,所述第一文件信息列表和所述第二文件信息列表中的每个文件的特征信息采用MD5算法生成。
21.如权利要求18所述的客户端程序的修复方法,其特征在于,所述接收所述用户端发送的获取用户端的所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求具体包括:
接收所述用户端发送的需修复文件信息列表,所述需修复文件信息列表包含用户端的所述客户端程序中每个被删除或被修改的文件的文件名;其中,所述需修复文件信息列表为所述用户端在确定所述客户端程序需要修复的文件后生成;
所述向所述用户端发送所述原始文件/最新文件具体包括:
向所述用户端发送所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
22.如权利要求21所述的客户端程序的修复方法,其特征在于,所述需修复文件信息列表包括被删除的文件修复信息列表以及被修改的文件修复信息列表;其中,所述被删除的文件修复信息列表包括每个被删除的文件的文件名;所述被修改的文件修复信息列表包含每个被修改的文件的文件名。
23.如权利要求21或22所述的客户端程序的修复方法,其特征在于,当客户端程序中被修改的文件大于阈值时,所述接收所述用户端发送的获取用户端的所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求还包括:
接收所述用户端随同所述第二请求发送的特征码列表,每一所述特征码列表为所述用户端将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块并计算出每个数据块的特征值后生成;
将每个被修改的文件的所述特征码列表与对应原始/最新文件进行对比生成校验码列表,并将所述校验码列表与对应的所述特征码列表进行比对,确定所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块。
24.如权利要求23所述的客户端程序的修复方法,其特征在于,通过以下步骤生成每个所述被修改的文件所对应的原始文件的校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与对应的所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
25.如权利要求24所述的客户端程序的修复方法,其特征在于,
所述阈值为1MB;每个数据块的特征值及校验特征值通过MD5算法计算得到。
26.如权利要求23所述的客户端程序的修复方法,其特征在于,所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块分别为连续的数据块,且不受所述阈值大小限制。
27.如权利要求23所述的客户端程序的修复方法,其特征在于,所述向所述用户端发送所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件具体包括:
向所述用户端发送所述需修复文件信息列表中每个被删除的文件的所对应的原始文件/最新文件,使所述用户端根据所述原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件所对应原始文件/最新文件,且每个被修改的文件少于阈值,使所述用户端将所述原始文件/最新文件对应替换所述被修改的文件;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,并同时发送生成的每一所述校验码列表,使所述用户端根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。
28.一种客户端程序的修复装置,其特征在于,包括:
第一请求发送模块,用于当响应启动客户端程序的操作时,向服务器发送获取所述客户端程序的原始/最新版本的第一文件信息列表的第一请求;
处理模块,用于将所述服务器返回的第一文件信息列表与本地的所述客户端程序的第二文件信息列表进行比对,从而确定本地的所述客户端程序需要修复的文件;
第二请求发送模块,用于向所述服务器发送获取本地的所述需要修复的文件所对应的原始文件/最新文件的第二请求;
修复模块,用于将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
29.如权利要求28所述的客户端程序的修复装置,其特征在于,所述第一文件信息列表包含所述客户端程序的原始/最新版本中的每个文件的文件名和特征信息,所述第二文件信息列表包含本地的所述客户端程序中的每个文件的文件名和特征信息;所述客户端程序需要修复的文件包括被删除的文件和被修改的文件;
所述处理模块具体用于:
若所述服务器返回的第一文件信息列表中的文件名不存在所述第二文件信息列表中,则判断所述文件名所对应的文件为所述被删除的文件;
若所述服务器返回的第一文件信息列表中的文件名存在所述第二文件信息列表中,但所述第一文件信息列表与第二文件信息列表中的所述文件名对应的特征信息不一致时,则判断本地所述文件名对应的文件为所述被修改的文件。
30.如权利要求29所述的客户端程序的修复装置,其特征在于,所述文件信息列表采用哈希表结构,所述哈希表的Key为每个文件的文件名,所述哈希表的Value为每个文件的特征信息。
31.如权利要求30所述的客户端程序的修复装置,其特征在于,所述第一文件信息列表和所述第二文件信息列表中的每个文件的特征信息采用MD5算法生成。
32.如权利要求29所述的客户端程序的修复装置,其特征在于,所述第二请求发送模块具体用于:
基于本地的所述客户端程序需要修复的文件生成需修复文件信息列表,所述需修复文件信息列表包含每个被删除或被修改的文件的文件名;
将所述需修复文件信息列表发送给所述服务器,以获取所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
33.如权利要求32所述的客户端程序的修复装置,其特征在于,所述需修复文件信息列表包括被删除的文件修复信息列表以及被修改的文件修复信息列表;其中,所述被删除的文件修复信息列表包括每个被删除的文件的文件名;所述被修改的文件修复信息列表包含每个被修改的文件的文件名。
34.如权利要求32或33所述的客户端程序的修复装置,其特征在于,还包括:
判断模块,用于判断每个所述被修改的文件是否大于阈值;
分块处理模块,用于将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块,并计算出每个数据块的特征值,从而生成每个被修改的文件的特征码列表;
所述第二请求发送模块进一步用于:将生成的每个所述特征码列表随同所述需修复文件信息列表一同发送给所述服务器,以获取大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块;其中,所述大于阈值的每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,由所述服务器将接收到的所述特征码列表与所述被修改的文件所对应的原始/最新文件进行比对生成校验码列表后,将所述校验码列表与对应的所述特征码列表进行比对确定。
35.如权利要求34所述的客户端程序的修复装置,其特征在于,所述阈值为1MB。
36.如权利要求34所述的客户端程序的修复装置,其特征在于,每个数据块的特征值通过采用MD5算法计算得到。
37.如权利要求34所述的客户端程序的修复装置,其特征在于,所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块分别为连续的数据块,且不受所述阈值大小限制。
38.如权利要求34所述的客户端程序的修复装置,其特征在于,所述修复模块具体用于:
当所述服务器返回的为本地被删除的文件所对应的原始文件/最新文件时,则根据原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上;
当所述服务器返回的为本地被修改的文件所对应原始文件/最新文件时,且本地被修改的文件少于阈值时,则将对应的所述原始文件/最新文件对应替换本地被修改的文件;
当所述服务器返回的为本地每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块时,还会同时接收所述服务器发送的所述校验码列表,则根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。
39.如权利要求27所述的客户端程序的修复装置,其特征在于,所述修复模块通过启动文件更新器将所述服务器返回的所述原始文件/最新文件对所述需要修复的文件进行修复。
40.如权利要求27所述的客户端程序的修复装置,其特征在于,所述修复模块进一步用于:
判断所述服务器返回的所述原始文件/最新文件中是否包括所述客户端程序的第一件文件更新器;
若是,则通过已启动的所述客户端程序将所述第一件文件更新器替换本地的客户端程序的第二文件更新器后,启动所述第一件文件更新器来完成所述客户端程序的修复过程;
若否,则启动所述第二文件更新器来完成所述客户端程序的修复过程。
41.如权利要求40所述的客户端程序的修复装置,其特征在于,所述修复模块进一步用于:
在启动所述第一文件更新器或第二文件更新器后,将已启动的所述客户端程序退出。
42.如权利要求27、40或41所述的客户端程序的修复装置,其特征在于,所述修复模块进一步用于:
将所述服务器返回的所述原始文件/最新文件存储到待更新区,对于所述待更新区的每个文件,将对应的所述客户端程序需要修复的文件备份到备份区,并将所述待更新区的每个文件替换对应的所述客户端程序需要修复的文件;
若对所述客户端程序的修复操作失败时,则利用所述备份区中的每个文件对所述客户端程序已修复的部分文件进行回滚操作。
43.如权利要求27所述的客户端程序的修复装置,其特征在于,所述第一请求中包含所述客户端程序的版本号;当所述版本号为空时,则表示向所述服务器发送获取最新版本的所述客户端程序的第一文件信息列表。
44.一种服务器,其特征在于,包括:
第一请求接收模块,用于接收用户端发送的获取客户端程序的原始/最新版本的第一文件信息列表的第一请求;其中,所述第一请求为所述用户端响应启动所述客户端程序的操作时生成;
第一发送模块,用于向所述用户端发送所述第一文件信息列表;
第二请求接收模块,用于接收所述用户端发送的获取所述客户端程序需要修复的文件所对应的原始文件/最新文件的第二请求;其中,所述客户端程序需要修复的文件所对应的原始文件/最新文件为所述用户端将接收到的所述第一文件信息列表与用户端的所述客户端程序的第二文件信息列表进行比对确定;
第二发送模块,用于向所述用户端发送所述原始文件/最新文件;所述原始文件/最新文件被所述用户端用来对用户端的所述客户端程序需要修复的文件进行修复。
45.如权利要求44所述的服务器,其特征在于,所述第一文件信息列表包含所述客户端程序的原始/最新版本中的每个文件的文件名和特征信息,所述第二文件信息列表包含用户端的所述客户端程序中的每个文件的文件名和特征信息;用户端的所述客户端程序需要修复的文件包括被删除的文件和被修改的文件;
若所述用户端接收的第一文件信息列表中的文件名不存在所述第二文件信息列表中,则所述文件名所对应的文件为所述被删除的文件;
若所述用户端接收的第一文件信息列表中的文件名存在所述第二文件信息列表中,但所述第一文件信息列表与第二文件信息列表中的所述文件名对应的特征信息不一致时,则用户端所述文件名对应的文件为所述被修改的文件。
46.如权利要求45所述的服务器,其特征在于,所述第一文件信息列表和第二文件信息列表均采用哈希表结构,所述哈希表的Key为每个文件的文件名,所述哈希表的Value为每个文件的特征信息。
47.如权利要求46所述的服务器,其特征在于,所述第一文件信息列表和所述第二文件信息列表中的每个文件的特征信息采用MD5算法生成。
48.如权利要求45所述的服务器,其特征在于,所述第二请求接收模块具体用于:
接收所述用户端发送的需修复文件信息列表,所述需修复文件信息列表包含用户端的所述客户端程序中每个被删除或被修改的文件的文件名;其中,所述需修复文件信息列表为所述用户端在确定所述客户端程序需要修复的文件后生成;
所述第二发送模块具体用于:
向所述用户端发送所述需修复文件信息列表中每个被删除或被修改的文件的文件名所对应的整个原始文件/最新文件。
49.如权利要求48所述的服务器,其特征在于,所述需修复文件信息列表包括被删除的文件修复信息列表以及被修改的文件修复信息列表;其中,所述被删除的文件修复信息列表包括每个被删除的文件的文件名;所述被修改的文件修复信息列表包含每个被修改的文件的文件名。
50.如权利要求48或49所述的服务器,其特征在于,当客户端程序中被修改的文件大于阈值时,所述第二请求接收模块还用于:
接收所述用户端随同所述第二请求发送的特征码列表,每一所述特征码列表为所述用户端将大于阈值的每个被修改的文件按照阈值大小划分成多个数据块并计算出每个数据块的特征值后生成;
所述服务器还包括:
处理模块,用于将每个被修改的文件的所述特征码列表与对应原始/最新文件进行对比生成校验码列表,并将所述校验码列表与对应的所述特征码列表进行比对,确定所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块。
51.如权利要求50所述的服务器,其特征在于,所述处理模块通过以下步骤生成每个所述被修改的文件所对应的原始文件的校验码列表:
步骤1、从所述原始文件的第0个字节开始,计算第一个阈值大小数据块的校验码;
步骤2、若所述校验码与对应的所述特征码列表中的第一个特征值相同时,则将所述第一个特征值加入到所述校验码列表中;否则向后移一个字节,再计算从所述原始文件的第1个字节开始的阈值大小数据块的校验码,如此循环,直到找到所述阈值大小数据块的校验码与所述特征码列表的第一个特征值相同的第N个字节时,则将所述原始文件的第0个字节到第N-1字节之间的数据块生成的校验码加入到所述校验码列表中,N≥2;然后计算从第N字节开始的阈值大小数据块的校验码,并执行上述步骤,直至查找完所述特征码列表的所有特征值,生成所述校验码列表;
步骤3、若遍历所述原始文件的所有字节均没有找到与所述特征码列表的第一个特征值相同的校验码时,则循环上述步骤找出与所述特征码列表的第二个特征值相同的校验码所在的字节,直至查找所述特征码列表的所有特征值,生成所述校验码列表。
52.如权利要求51所述的服务器,其特征在于:
所述阈值为1MB;每个数据块的特征值及校验特征值通过MD5算法计算得到。
53.如权利要求50所述的服务器,其特征在于,所述每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块分别为连续的数据块,且不受所述阈值大小限制。
54.如权利要求50所述的服务器,其特征在于,所述第二发送模块进一步用于:
向所述用户端发送所述需修复文件信息列表中每个被删除的文件的所对应的原始文件/最新文件,使所述用户端根据所述原始文件/最新文件的文件名将所述原始文件/最新文件存储到对应文件路径的区域上;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件所对应原始文件/最新文件,且每个被修改的文件少于阈值,使所述用户端将所述原始文件/最新文件对应替换所述被修改的文件;
向所述用户端发送所述需修复文件信息列表中每个被修改的文件中被修改/删除了的数据块所对应的原始/最新数据块,并同时发送生成的每一所述校验码列表,使所述用户端根据所述校验码列表将所述原始/最新数据块对相应的被修改的文件进行重建。
55.一种修复客户端程序的系统,其特征在于,包括至少一个如权利要求28~43任一项所述的修复客户端程序的装置以及如权利要求44~54任一项所述的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510633248.6A CN105446829A (zh) | 2015-09-29 | 2015-09-29 | 客户端程序的修复方法、装置、系统及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510633248.6A CN105446829A (zh) | 2015-09-29 | 2015-09-29 | 客户端程序的修复方法、装置、系统及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105446829A true CN105446829A (zh) | 2016-03-30 |
Family
ID=55557062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510633248.6A Pending CN105446829A (zh) | 2015-09-29 | 2015-09-29 | 客户端程序的修复方法、装置、系统及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446829A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106022125A (zh) * | 2016-05-03 | 2016-10-12 | 北京金山安全软件有限公司 | 一种客户端的修复方法及装置 |
CN106021003A (zh) * | 2016-05-05 | 2016-10-12 | 捷开通讯(深圳)有限公司 | 智能终端的修复方法、智能终端以及服务器 |
CN106648927A (zh) * | 2016-11-26 | 2017-05-10 | 上海亿账通互联网科技有限公司 | 异常信息收集方法及服务器 |
CN107357910A (zh) * | 2017-07-18 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种数据对比的方法及装置 |
WO2018014564A1 (zh) * | 2016-07-20 | 2018-01-25 | 中兴通讯股份有限公司 | 传输文件不完整的恢复方法及装置 |
CN108153537A (zh) * | 2017-12-25 | 2018-06-12 | 北京车联天下信息技术有限公司 | 移动应用更新方法及装置 |
CN109063468A (zh) * | 2018-06-14 | 2018-12-21 | 珠海金山网络游戏科技有限公司 | 一种安装包完整性验证及修复的方法 |
CN109254786A (zh) * | 2018-09-30 | 2019-01-22 | 湖北华联博远科技有限公司 | 一种软件备份还原方法及系统 |
WO2019071858A1 (zh) * | 2017-10-09 | 2019-04-18 | 武汉斗鱼网络科技有限公司 | 一种更新文件的方法、装置和设备 |
CN112465348A (zh) * | 2020-11-26 | 2021-03-09 | 随锐科技集团股份有限公司 | 生产线产品检测管理方法、系统、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079093A (zh) * | 2006-05-25 | 2007-11-28 | 株式会社东芝 | 数据处理设备、用于处理数据的方法和计算机程序产品 |
CN101458645A (zh) * | 2007-12-11 | 2009-06-17 | 英业达股份有限公司 | 计算机操作系统与其软件的文件数据修复系统及其方法 |
US7668880B1 (en) * | 2007-05-15 | 2010-02-23 | Jim Carroll | Offsite computer file backup system providing rapid recovery and method thereof |
CN102053853A (zh) * | 2010-12-30 | 2011-05-11 | 北京像素软件科技股份有限公司 | 一种网络游戏版本更新方法 |
CN102843400A (zh) * | 2011-06-23 | 2012-12-26 | 珠海市君天电子科技有限公司 | 文件下载的方法及系统 |
CN103034560A (zh) * | 2011-09-29 | 2013-04-10 | 腾讯科技(深圳)有限公司 | 一种修复应用软件的方法、装置及系统 |
CN103617215A (zh) * | 2013-11-20 | 2014-03-05 | 上海爱数软件有限公司 | 一种利用数据差异算法生成多版本文件的方法 |
CN103745158A (zh) * | 2014-01-26 | 2014-04-23 | 北京奇虎科技有限公司 | 修复系统漏洞的方法和装置 |
-
2015
- 2015-09-29 CN CN201510633248.6A patent/CN105446829A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079093A (zh) * | 2006-05-25 | 2007-11-28 | 株式会社东芝 | 数据处理设备、用于处理数据的方法和计算机程序产品 |
US7668880B1 (en) * | 2007-05-15 | 2010-02-23 | Jim Carroll | Offsite computer file backup system providing rapid recovery and method thereof |
CN101458645A (zh) * | 2007-12-11 | 2009-06-17 | 英业达股份有限公司 | 计算机操作系统与其软件的文件数据修复系统及其方法 |
CN102053853A (zh) * | 2010-12-30 | 2011-05-11 | 北京像素软件科技股份有限公司 | 一种网络游戏版本更新方法 |
CN102843400A (zh) * | 2011-06-23 | 2012-12-26 | 珠海市君天电子科技有限公司 | 文件下载的方法及系统 |
CN103034560A (zh) * | 2011-09-29 | 2013-04-10 | 腾讯科技(深圳)有限公司 | 一种修复应用软件的方法、装置及系统 |
CN103617215A (zh) * | 2013-11-20 | 2014-03-05 | 上海爱数软件有限公司 | 一种利用数据差异算法生成多版本文件的方法 |
CN103745158A (zh) * | 2014-01-26 | 2014-04-23 | 北京奇虎科技有限公司 | 修复系统漏洞的方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106022125A (zh) * | 2016-05-03 | 2016-10-12 | 北京金山安全软件有限公司 | 一种客户端的修复方法及装置 |
CN106022125B (zh) * | 2016-05-03 | 2019-09-17 | 珠海豹趣科技有限公司 | 一种客户端的修复方法及装置 |
CN106021003A (zh) * | 2016-05-05 | 2016-10-12 | 捷开通讯(深圳)有限公司 | 智能终端的修复方法、智能终端以及服务器 |
CN106021003B (zh) * | 2016-05-05 | 2019-11-29 | 捷开通讯(深圳)有限公司 | 智能终端的修复方法、智能终端以及服务器 |
WO2018014564A1 (zh) * | 2016-07-20 | 2018-01-25 | 中兴通讯股份有限公司 | 传输文件不完整的恢复方法及装置 |
CN106648927A (zh) * | 2016-11-26 | 2017-05-10 | 上海亿账通互联网科技有限公司 | 异常信息收集方法及服务器 |
CN106648927B (zh) * | 2016-11-26 | 2018-02-27 | 上海壹账通金融科技有限公司 | 异常信息收集方法及服务器 |
CN107357910A (zh) * | 2017-07-18 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种数据对比的方法及装置 |
WO2019071858A1 (zh) * | 2017-10-09 | 2019-04-18 | 武汉斗鱼网络科技有限公司 | 一种更新文件的方法、装置和设备 |
CN108153537A (zh) * | 2017-12-25 | 2018-06-12 | 北京车联天下信息技术有限公司 | 移动应用更新方法及装置 |
CN109063468A (zh) * | 2018-06-14 | 2018-12-21 | 珠海金山网络游戏科技有限公司 | 一种安装包完整性验证及修复的方法 |
CN109254786A (zh) * | 2018-09-30 | 2019-01-22 | 湖北华联博远科技有限公司 | 一种软件备份还原方法及系统 |
CN112465348A (zh) * | 2020-11-26 | 2021-03-09 | 随锐科技集团股份有限公司 | 生产线产品检测管理方法、系统、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446829A (zh) | 客户端程序的修复方法、装置、系统及服务器 | |
CN105160253A (zh) | 修复客户端程序的方法、装置、系统及服务器 | |
CN109683826B (zh) | 用于分布式存储系统的扩容方法和装置 | |
RU2449358C1 (ru) | Распределенная файловая система и способ управления согласованностью блоков данных в такой системе | |
US11537659B2 (en) | Method for reading and writing data and distributed storage system | |
CN101110788B (zh) | 升级客户端软件的方法及系统 | |
US8943220B2 (en) | Continuous deployment of applications | |
CN105550229A (zh) | 分布式存储系统数据修复的方法和装置 | |
CN111399873A (zh) | 一种模型更新方法及装置 | |
CN105677415A (zh) | 热更新方法及装置 | |
WO2011110533A1 (en) | Optimizing restores of deduplicated data | |
CN105354102B (zh) | 一种文件系统维护和修复的方法和装置 | |
CN108228678B (zh) | 一种多副本数据恢复方法及装置 | |
CN106445643A (zh) | 克隆、升级虚拟机的方法及设备 | |
CN104375905A (zh) | 一种基于数据块的增量备份的方法和系统 | |
CN111581028A (zh) | 一种基于数据块的数据快速备份和一致性验证方法及系统 | |
CN105550071A (zh) | 系统文件升级及检测方法、通信设备 | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 | |
CN104348905A (zh) | 一种离线推送消息的方法及装置 | |
US8489698B2 (en) | Apparatus and method for accessing a metadata | |
CN109672544B (zh) | 一种数据处理方法、装置及分布式存储系统 | |
US8312237B2 (en) | Automated relocation of in-use multi-site protected data storage | |
CN110287164B (zh) | 一种数据恢复方法、装置及计算机设备 | |
CN105630625A (zh) | 检测数据副本之间的一致性的方法和装置 | |
US7246352B2 (en) | System for generating a virtual map to a plurality of files necessary for installing software from multiple networked locations |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160330 |