基于文件夹的补丁升级包生成及差分升级方法和装置与流程

文档序号:11154514阅读:325来源:国知局
基于文件夹的补丁升级包生成及差分升级方法和装置与制造工艺

本发明涉及移动通信领域,具体而言,本发明涉及一种基于文件夹的补丁升级包生成及差分升级方法及其装置。



背景技术:

在现有Linux设备软件功能不断增加,软件升级的升级包也越来越大,并且外场的网络环境也是不稳定的,所以对设备升级过程中,解决出现升级包过大或网络传输速度的限制导致设备升级时长过大的问题时,通常会使用差分升级对设备进行升级,软件升级包发生数量级变化,由原有的50MByte减少到几百Kbyte,大大减少升级时间和维护成本。但是现有的差分升级几乎都是只能对镜像文件进行升级,通常情况下升级包里会存在一些文件夹,比如本地网页用的web文件夹,必要时这些文件夹里的文件需要更换,这就造成不能使用差分升级对设备进行升级,只能使用整包升级,升级包过大或网络传输速度的限制等问题就会出现,因此需要提供一种能够在差分升级中对指定的文件夹也一同升级的方法,综合整包升级和差分升级的优点,提高对设备升级的效率。



技术实现要素:

本发明的目的旨在解决文件夹的差分升级问题,提供一种文件夹的补丁升级包生成及差分升级方法和装置。

为了实现上述目的,本发明提供一种基于文件夹的差分升级方法,包括以下步骤:

获取补丁升级包;

读取补丁升级包中的补丁文件名称和文件夹名称;

解差分补丁升级包中的补丁文件和文件夹中的特定文件的二进制文件;

创建用于存放解差分补丁升级包所获得的目标升级包的第一压缩包;

将所述解差分补丁升级包所获得的目标升级包拷贝到所述第一压缩包;

将所述第一压缩包替换原备份目录中的第二压缩包,以完成差分升级。

具体的,所述解差分补丁升级包所获得的目标升级包,具体包括:

解差分补丁文件所获得的镜像文件、解差分文件夹中的特定文件的二进制文件所获得的特定文件、文件夹中未经处理的文件。

进一步,在将所述第一压缩包替换原备份目录中的第二压缩包之前,还包括步骤:

将所述原备份目录中的第二压缩包中存在而所述目标升级包中不存在的文件或文件夹拷贝入所述第一压缩包。

更进一步,将所述解差分补丁升级包所获得的目标升级包拷贝到所述第一压缩包,具体包括以下步骤:

将文件夹名称和生成补丁文件的镜像文件名称保存于同一个关联容器中;

遍历所述关联容器中的所有文件夹名称和文件名称;

若为文件夹名称则遍历该文件夹中的所有文件,并将所有文件拷贝至所述第一压缩包;

若为文件名称则将该文件直接拷贝至所述第一压缩包。

具体的,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。

一种基于文件夹的补丁升级包生成方法,包括以下步骤:

将需要升级的镜像文件通过差分工具处理生成补丁文件;

将需要升级的文件夹中的特定文件通过差分工具处理生成二进制文件;

将所述生成的补丁文件、特定文件的二进制文件和文件夹中未经过处理的文件压缩打包生成所述补丁升级包。

具体的,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。

优选的,所述差分工具为bsdiff工具。

一种基于文件夹的差分升级装置,包括:

获取模块:用于获取补丁升级包;

读取模块:用于读取补丁升级包中的补丁文件名称和文件夹名称;

解差分模块:用于解差分补丁升级包中的补丁文件和文件夹中的特定文件的二进制文件;

创建模块:用于创建用于存放解差分补丁升级包所获得的目标升级包的第一压缩包;

第一拷贝模块:用于将所述解差分补丁升级包所获得的目标升级包拷贝到所述第一压缩包;

差分升级模块:用于将所述第一压缩包替换原备份目录中的第二压缩包,以完成差分升级。

具体的,所述解差分补丁升级包所获得的目标升级包,具体包括:

解差分补丁文件所获得的镜像文件、解差分文件夹中的特定文件的二进制文件所获得的特定文件、文件夹中未经处理的文件。

进一步,还包括第二拷贝模块,用于将所述原备份目录中的第二压缩包中存在而所述目标升级包中不存在的文件或文件夹拷贝入所述第一压缩包。

更进一步,所述第一拷贝模块包括以下子模块:

保存模块:用于将文件夹名称和生成补丁文件的镜像文件名称保存于同一个关联容器中;

遍历模块:用于遍历所述关联容器中的所有文件夹名称和文件名称;

第三拷贝模块:若为文件夹名称则遍历该文件夹中的所有文件,并将所有文件拷贝至所述第一压缩包;

第四拷贝模块:若为文件名称则将该文件直接拷贝至所述第一压缩包。

具体的,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。

一种基于文件夹的补丁升级包生成装置,包括:

第一生成模块:用于将需要升级的镜像文件通过差分工具处理生成补丁文件;

第二生成模块:用于将需要升级的文件夹中的特定文件通过差分工具处理生成二进制文件;

补丁升级包生成模块:用于将所述生成的补丁文件、特定文件的二进制文件和文件夹中未经过处理的文件压缩打包生成所述补丁升级包。

具体的,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。

优选的,所述差分工具为bsdiff工具。

相比现有技术,本发明的方案具有以下优点:

本发明所述方法在现有差分升级技术的基础上增加对文件夹的升级,不仅实现了设备对文件夹的同步升级,而且大大减小了升级包的大小,减小了计算复杂度,增加了升级效率,进一步提高了用户的体验度。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明所述基于文件夹的差分升级方法的流程示意图;

图2为基站与网管中心系统进行交互下载补丁升级包的流程图;

图3为本发明所述差分升级的补丁升级包结构示意图;

图4为基于补丁升级包的升级流程示意图;

图5为本发明所述基于文件夹的补丁升级包生成方法流程示意图;

图6为本发明所述基于文件夹的差分升级装置的结构框图;

图7为本发明所述基于文件夹的补丁升级包生成装置的结构框图;

图8为本发明所述补丁升级包描述文件UpgaradDesc.xml结构描述示例图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

由于传统的Linux设备远程升级存在升级包过大或者受网络传输速度的限制等问题,造成设备在运维成本上越来越不具备竞争优势。现通过对差分升级的优化创新,提供一种支持对文件夹升级的差分升级方案,通过巧妙的软件设计,实现对减小升级包的大小的同时,支持多文件夹的升级,解决设备升级耗时过长的问题,提高对设备的升级效率,减少设备因升级过程中对设备业务工作造成的影响,减低设备的运维和管理成本,提高用户体验。

基于上述目的,参看图1所示,本发明一实施例提供一种基于文件夹的差分升级方法,包括以下步骤:

步骤101、获取补丁升级包;

具体地,所述补丁升级包由一个包含了所有补丁文件和待升级全包文件夹的补丁压缩文件替代,由基站与网管中心系统交互后,下载到基站的相应设备。

如图2所示,所述补丁升级包由基站与网管中心系统进行交互下载获取,基站以get方式获取网管中心系统数据,网管中心系统以post方式获取基站的反馈信息。通过相互交互先建立连接请求,然后将补丁升级包以及其他可能信息下载至基站的相应设备。

其中,为了使补丁文件和待升级文件夹支持生成压缩包patch.zip,本发明对补丁升级包中的文件和文件夹格式及压缩格式作如下说明:

所述文件夹的格式包括web、drv、s1u、ul;所述文件或文件夹的压缩格式包括TD-LTE_OAM、TD-LT_L3、TD-LTE_S1U、LTE_TDD_CMAC、LTE_TDD_L2、LTE_L1_S、LTE_L1_M、ptpv2d、ipsec.zip、app.zip。

进一步的,需要升级的新增文件或文件夹放入补丁升级包,不需要升级的文件或文件夹则无需放入补丁升级包。在执行差分升级的过程中,对诸如appbooter,oam.db,default.xml等必要文件不进行校验,若所需要的必要文件不存在于补丁升级包中,则从当前设备的运行目录中复制,所述升级所需的文件如图3所示。其中,图中所示的patch.zip文件即为本发明所述补丁升级包的替代压缩包,其包含所有补丁文件和待升级的全包文件夹。图中所示的UpgradDesc.xml文件为补丁升级包描述文件;oam.db、appbooter、default.xml等文件为升级过程所需的必要配置文件,该些文件在升级过程中不需要进行校验,若该些必要文件不存在于补丁升级包中,则从当前设备的运行目录复制获取。

为进一步阐述本发明所述补丁升级包的结构,通过以下例子作具体说明:

如图8所示,其为补丁升级包描述文件UpgaradDesc.xml结构描述示例,其中TD_LTE_OAM是由镜像文件生成的补丁文件,Wed是需要升级的文件夹中的文件,不是补丁文件。

BaseVersion和DestVersion分别表示补丁文件对应的基础版本号和目标版本号,所述补丁文件由目标版本号对应的镜像文件和基础版本号对应的镜像文件进行差分处理得到。图中Size属性表示的是执行完差分升级以后目标文件的大小,而并非是补丁文件的大小。

步骤102、读取补丁升级包中的补丁文件名称和文件夹名称;

所述补丁升级包中包括由需要升级的镜像文件生成的补丁文件和需要升级的文件夹,设备获取到补丁升级包后,先读取其中的补丁文件名称和文件夹名称。在具体实施例中,所述补丁文件名称和文件夹名称通过读取补丁升级包描述文件UpgradeDesc.xml文件中的信息获取,同时,还可以从该文件中读取补丁文件的版本号和对应的基础版本号,以及升级完后的目标文件的大小等信息。

步骤103、解差分补丁升级包中的补丁文件和文件夹中的特定文件的二进制文件;

通过步骤102获取到补丁升级包中的各文件名称,确定各文件是补丁文件还是文件夹中的特定文件。对所述补丁文件和文件夹中的特定文件的二进制文件进行解差分处理,优选地,可采用bspatch工具。补丁文件通过解差分后还原为镜像文件的目标版本,所述文件夹的特定文件的二进制文件通过解差分还原为升级的文件版本。

步骤104、创建用于存放解差分补丁升级包所获得的目标升级包的第一压缩包;

具体地,所述解差分补丁升级包所获得的目标升级包包括:解差分补丁文件所获得的镜像文件、解差分文件夹中的特定文件的二进制文件所获得的特定文件、文件夹中未经处理的文件。

创建用于存放所述解差分补丁升级包所获得的目标升级包的文件夹,将解差分补丁文件得到的镜像文件目标版本和解差分还原的文件夹存入该创建的文件夹,然后进行打包压缩生成所述第一压缩包。

步骤105、将所述解差分补丁升级包所获得的目标升级包拷贝到所述第一压缩包;

所述解差分补丁升级包所获得的目标升级包包括:解差分补丁文件所获得的镜像文件、解差分文件夹中的特定文件的二进制文件所获得的特定文件、文件夹中未经处理的文件。由于所述补丁升级包是由一个包含了所有补丁文件和待升级全包文件夹的补丁压缩文件替代,为了将所述替代补丁压缩文件还原为一个可用于升级的补丁升级包,需要将其中的文件进行重新整理,以形成完整的补丁升级压缩包,即本发明所述的第一压缩包。

具体的,该步骤包括以下子步骤:

S1、将文件夹名称和生成补丁文件的镜像文件名称保存于同一个关联容器中;

S2、遍历所述关联容器中的所有文件夹名称和文件名称;

S3、若为文件夹名称则遍历该文件夹中的所有文件,并将所有文件拷贝至所述第一压缩包;

S4、若为文件名称则将该文件直接拷贝至所述第一压缩包。

步骤106、将所述第一压缩包替换原备份目录中的第二压缩包,以完成差分升级。

所述第一压缩包替换设备中原备份目录中的第二压缩包,即由升级文件替换原文件,然后由设备执行相应差分升级流程完成镜像文件的升级,同时完成文件夹的升级。

进一步的,在所述步骤106之前,本发明所述方法还包括步骤,将所述原备份目录中的第二压缩包中存在而所述目标升级包中不存在的文件或文件夹拷贝入所述第一压缩包。

为进一步说明本发明所述差分升级方法,提供以下具体实施例对本发明所述方法作详细阐述,如图4所示为基于补丁升级包的升级流程示意图,在差分升级的过程中同时实现对补丁文件和对文件夹的升级。

首先,设备自动读取补丁升级包版本信息和对应的主版本信息,根据版本信息取得是否需要升级,同时完成补丁包升级包的校验。所述NodeB.zip为将补丁升级包解差分所获得的目标升级包Patch.zip中的文件拷贝后形成的压缩包,即上述步骤中所述的第一压缩包。

然后,将该第一压缩包替换原备份目录中的压缩包,并检查是否缺少必要文件,若缺少则从当前运行的目录拷贝,从而完成差分升级过程。具体地,设备执行差分升级时,先读取UpgradeDesc.xml文件里的信息,将所要升级的镜像文件和文件夹保存在set容器中,然后判断这个容器中需要进行解差分的文件,不需要进行差分升级的则不用解差分(主要是文件夹中的小文件),然后将所有的这些文件名称(文件夹的文件带上路径)保存在另一个set容器中,然后进行拷贝,在拷贝过程中把文件夹的名称和镜像文件名称保存在同一个set容器里,然后遍历这个容器,遍历时先判断是否是文件夹,如果不是,则直接拷贝到NodeB.zip,如果是则遍历文件夹里的文件并拷贝到NodeB.zip,其中所述NodeB.zip为预先创建的用于存放所要升级的镜像文件和文件夹的文件的压缩包。最后,对系统的配置文件及升级状态、版本信息等进行更新。

由于NodeB.zip中包括镜像文件的补丁文件和需要升级的文件夹的所有文件,因此在对补丁文件进行升级的过程中也实现了对所述需要升级的文件夹的升级。

上述差分升级所执行的补丁升级包由网管中心系统生成,网管中心系统根据用户上传的相应设备所需的升级包生成所述补丁升级包,与基站进行交互下载到相应设备。请参阅图5所示,本发明另一实施例提供一种基于文件夹的补丁升级包生成方法,包括以下步骤:

步骤501、将需要升级的镜像文件通过差分工具处理生成补丁文件;

具体的,所述补丁文件由需要升级的镜像文件通过差分工具处理后生成,所述文件夹为需要升级的文件夹通过差分工具处理生成,两者共同构成所述补丁升级包。

优选的,所述差分工具为bsdiff工具,具体地,采用bsdiff工具比较镜像文件的原版本的二进制文件和目标版本的二进制文件,将两者中的区别文件作为补丁文件,该补丁文件为二进制文件。

步骤502、将需要升级的文件夹中的特定文件通过差分工具处理生成二进制文件;

所述特定文件指其文件大小大于预设阈值的文件,将需要升级的文件夹中的确定为特定文件的文件通过差分工具处理,如bsdiff工具,生成相应的二进制文件。

步骤503、将所述生成的补丁文件、特定文件的二进制文件和文件夹中未经过处理的文件压缩打包生成所述补丁升级包。

所述文件夹中除特定文件以为的其他文件则不作差分处理,直接以原文件格式与所述补丁文件和特定文件的二进制文件一起进行压缩打包。由此,通过上述步骤生成用于差分升级的补丁升级包,以由相应设备采用该补丁升级包执行差分升级。具体地,此处生成的补丁升级包为一个包含所有补丁文件和待升级文件夹的所有文件的压缩文件。

请参阅图示6,本发明又一实施例提供一种基于文件夹的差分升级装置,所述装置包括:获取模块60、读取模块61、解差分模块62、创建模块63、第一拷贝模块64、差分升级模块65。其中,

获取模块60用于获取补丁升级包;读取模块61用于读取补丁升级包中的补丁文件名称和文件夹名称;解差分模块62用于解差分所述读取模块61读取的补丁升级包中的补丁文件和文件夹中的特定文件的二进制文件;创建模块63用于创建用于存放所述解差分模块62解差分后得到的目标升级包的第一压缩包;第一拷贝模块64用于将所述解差分模块62解差分后得到的目标升级包拷贝到所述第一压缩包;差分升级模块65用于将所述第一压缩包替换原备份目录中的第二压缩包,以完成差分升级。具体地,所述目标升级包包括解差分补丁文件所获得的镜像文件、解差分文件夹中的特定文件的二进制文件所获得的特定文件、文件夹中未经处理的文件。其中,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。

所述第一拷贝模块64还包括子模块,分别为保存模块640、遍历模块641、第三拷贝模块642、第四拷贝模块643,其中,

保存模块640用于将文件夹名称和生成补丁文件的镜像文件名称保存于同一个关联容器中;遍历模块641用于遍历所述关联容器中的所有文件夹名称和文件名称;第三拷贝模块642被配置为若为文件夹名称则遍历该文件夹中的所有文件,并将所有文件拷贝至所述第一压缩包;第四拷贝模块643被配置为若为文件名称则将该文件直接拷贝至所述第一压缩包。

进一步,还包括第二拷贝模块,用于将所述原备份目录中的第二压缩包中存在而所述目标升级包中不存在的文件或文件夹拷贝入所述第一压缩包。

本发明的方案中,所述基于文件夹差分升级装置中各模块的具体功能实现,可以参照所述基于文件夹差分升级方法的具体步骤,在此不再详述。

参考图7所示,本发明再一实施例提供一种基于文件夹的补丁升级包生成装置,所述装置包括:第一生成模块71、第二生成模块72、补丁升级包生成模块73,其中,

第一生成模块71用于将需要升级的镜像文件通过差分工具处理生成补丁文件;第二生成模块72用于将需要升级的文件夹中的特定文件通过差分工具处理生成二进制文件;补丁升级包生成模块73用于将所述生成的补丁文件、特定文件的二进制文件和文件夹中未经过处理的文件压缩打包生成所述补丁升级包。其中,所述文件夹中的特定文件为文件夹中文件大小大于预设阈值的文件。所述差分工具为bsdiff工具。

本发明的方案中,所述基于文件夹的补丁升级包生成装置中各模块的具体功能实现,可以参照所述基于文件夹的补丁升级包生成方法的具体步骤,在此不再详述。

综上所述,本发明在对设备的升级做了创新的优化,利用差分升级原有的优势,在其基础上巧妙增加对文件夹的升级,减小设备的计算复杂度和增加了处理效率,即极大地减小了升级包的大小,也增加了对文件夹的升级。在对设备的远程批量升级时,提高了升级效率,并且对设备的业务影响达到最低,提高了用户的体验度。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1