差分包的生成方法、装置及相应终端与流程

文档序号:14835371发布日期:2018-06-30 12:10阅读:333来源:国知局
差分包的生成方法、装置及相应终端与流程

本发明涉及计算机技术领域,具体而言,本发明涉及一种差分包的生成方法、装置及相应终端。



背景技术:

随着移动互联网技术的飞速发展,软件动态升级已经成为当前信息时代中软件持续使用的必然需求。所谓软件动态升级就是指移动设备在出厂上市到客户手中后,为了方便后期软件维护,移动设备生产商会推送系统补丁到手机,用户只要确认升级就可以把补丁应用于本系统,实现软件升级的目的。

一般推送补丁有两种方式,一种是把整个新文件的全部内容都通过网络推送到移动设备端。但是由于整个完整的文件尺寸较大,网络传输和本地存储都有压力,且耗费时间长,用户体验也很差。因此通常情况下,设备厂商推送的补丁不是整个的完整的文件,而是在已有文件的基础上实施部分修改后达到升级目的补丁包,即差分推送方式,就是把两个文件的不同内容推送过去。举个例子:

例如:原系统中有个文件的内容是123456789;

新系统中该文件的内容需要更改成1234567890;

可见,该文件的内容变化只有一个“0”,这时,显然差分推送更好,推送内容少,且能达到升级的效果。

在这过程中,差分包的作用就显得非常重要,当把一个差分包应用于待升级的系统时,必须能够忠实、完整、全面地复原新系统的内容。

传统的差分包主要用采“+”、“-”描述的方式将差分结果进行一个汇总,其中,“-”的内容代表待升级的系统中需要去掉的文件内容,“+”的内容代表需要增加的文件内容,每对比一个文件形成一段包含“+”、“-”符号的内容,最终就形成了一个差分包。

不难发现,这种格式的差分包只能表明升级过程中普通文件内容的不同,不能表现更多信息。然而,通常一个系统或软件会包含很多内容,不只是一个普通文件,也不只是一个目录,还包含很多额外因素,例如增加了设备文件,增加了文件的权能,修改了文件的属主等。对于复杂情况的系统或软件结构,如何使用差分包存储更多复杂的差分情况,成为亟需解决的问题。



技术实现要素:

为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:

本发明提供了一种差分包的生成方法,包括如下步骤:

获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;

针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;

依据多个差分操作分别对应的数据结构生成差分包。

其中,所述操作数据信息包括:

差分操作标识;差分操作对应在第一目录中的文件标识;差分操作对应在第二目录中的文件标识;差分操作对应内容数据或内容数据的文件索引。

具体地,所述差分操作包括以下任一项:

拷贝文件内容;创建目录;创建硬链接;创建软链接;删除文件;删除目录;单个普通文件差分;创建特殊文件;修改文件属主信息;修改文件访问权限;设置文件扩展属性。

实际应用中,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构的步骤之前,还包括:

针对任一差分操作,根据该差分操作对应内容数据生成相应的文件,并创建文件索引。

可选地,所述依据多个差分操作分别对应的数据结构生成差分包,包括:

将多个差分操作分别对应的数据结构及已生成的多个文件进行存储,以生成差分包。

可选地,所述根据该差分操作对应内容数据生成相应的文件,并创建文件索引,包括:

按照预定的命名规则对已生成的各个文件进行命名,并以命名后的各个文件的文件名称与索引编号相对应的方式创建文件索引。

可选地,所述依据多个差分操作分别对应的数据结构生成差分包,包括:

针对具有关联关系的至少两个差分操作,按照该至少两个差分操作的预定执行顺序,将多个差分操作分别对应的数据结构进行排列,以生成差分包。

本发明还提供了一种差分包的生成装置,包括:

获取模块,用于获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;

数据结构生成模块,用于针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;

差分包生成模块,用于依据多个差分操作分别对应的数据结构生成差分包。

可选地,所述差分包生成模块具体用于针对具有关联关系的至少两个差分操作,按照该至少两个差分操作的预定执行顺序,将多个差分操作分别对应的数据结构进行排列,以生成差分包。

本发明还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的生成方法。

本发明提供的差分包的生成方法、装置及相应终端,通过获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;依据多个差分操作分别对应的数据结构生成差分包,利用预定的数据结构来存储每个差分操作的操作数据信息,使得生成的差分包能够涵盖各种复杂的差分情况,显著提高差分包的使用性能。

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

附图说明

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

图1为本发明实施例提供的差分包的生成方法的流程示意图;

图2为本发明实施例生成的差分包的格式架构图;

图3为本发明实施例提供的差分包的生成装置的框架示意图。

具体实施方式

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

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

下面结合附图具体介绍本发明实施例的技术方案。

本发明实施例提供了一种差分包的生成方法,如图1所示,包括如下步骤:

步骤S110:获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;步骤S120:针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;步骤S130:依据多个差分操作分别对应的数据结构生成差分包。

本发明实施例提供的差分包的生成方法,利用预定的数据结构来存储每个差分操作的操作数据信息,使得生成的差分包能够涵盖各种复杂的差分情况,显著提高差分包的使用性能。

实际应用中,实现差分需要两个因素,一个是使用中的系统或软件,即待更新的文件,另一个是更新后的系统或软件。本发明实施例中,将这两个因素看作两个目录,其中,第一目录里包含了待更新的系统或软件的全部内容,第二目录包含了更新后的系统或软件的所有内容,实现差分处理以及制作差分包只需要关注这两个目录即可。

本发明实施例所生成的差分包,可以应用在包含以下内容的复杂目录结构:

1)目录中存在符号链接

如果第一目录中有a、b两个文件,且b文件是指向a文件的符号链接,即直接读b文件,就相当于读a文件;而第二目录中也存在a、b两个文件,但是a文件和b文件是相互独立的两个普通文件。此时如果对两个目录做差分,现有的差分包不会区别对待符号链接,而把符号链接看作普通文件,这种情况下的差分包必然仅存储了第一目录中的a文件与第二目录中的a文件的差别,以及第一目录中的b文件与第二目录中的b文件的差别。但是第一目录中有a文件和b文件实际上是同一个文件,当把该差分包真正应用于更新第一目录时必然发生错误。

2)目录中存在硬链接

硬链接与符号链接类似,也是由某个文件是指向另一个文件,但与符号链接不同的是,硬链接本身和其所指向的目标文件没有主从的关系,不是一个依靠另外一个的存在,而是对等的关系。不同于符号链接存在的主从关系,如果被指向的文件被删除,符号链接本身则无法正确打开和读取其内容,因为指向的目标已经不存在。而硬链接中,如果删除其中一个文件,另外一个仍然可以看成是普通文件。

虽然硬链接与符号链接略有不同,但是同样也存在与符号链接相同的问题,现有的差分包不会区别对待硬链接,使得差分包的应用发生错误。

3)目录中存在特殊文件

特殊文件包括但不限于设备文件、socket文件、管道文件等。

现有的差分算法不能识别特殊文件而是直接当成设备使用,在差分过程中遇到目录中存在特殊文件的情况,甚至可能无法完成差分,因此使用传统的差分包无法正确体现这种特殊的差分情况。

4)目录中的文件存在个别属性

其中,属性包括但不限于属主信息、访问权限、扩展属性等。

现有的差分包不能区分文件的属性,而文件的属性实际上必不可少,例如扩展属性,很多重要的功能都依赖于文件的扩展属性,如可执行文件的权能、一般文件的selinux标签等。如果第一目录中的a文件和第二目录中的a文件具有相同内容,只是文件的属主信息、访问权限、扩展属性等不一样,使用目前的差分包会忽略这些信息显然是有问题的。

通过本发明实施例生成的差分包能够解决上述问题,下面进行详细介绍,具体如下:

在步骤S110中,获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息。

具体地,记录第一目录与第二目录差分过程中的所有差分操作,而不实际对第一目录进行操作。

获取各个差分操作对应的操作数据信息,其中操作数据信息包括:差分操作标识;差分操作对应在第一目录中的文件标识;差分操作对应在第二目录中的文件标识;差分操作对应内容数据或内容数据的文件索引。

而差分操作包括以下任一项:拷贝文件内容;创建目录;创建硬链接;创建软链接;删除文件;删除目录;单个普通文件差分;创建特殊文件;修改文件属主信息;修改文件访问权限;设置文件扩展属性。

在步骤S120中,针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构。

本发明实施例中,预定的数据结构模板定义的数据结构实现示例如下:

具体而言,“operation”项中存储的是差分操作标识,用于指示具体的差分操作。作为示例地,本发明实施例生成的差分包的运行规则定义了差分操作标识与各差分操作的对应关系:

当“operation”项中存储的差分操作标识为整数1时,代表该具体差分操作为拷贝文件内容copy,该差分操作只涉及文件内容的处理,与文件属性等无关;

当“operation”项中存储的差分操作标识为整数2时,代表该具体差分操作为创建目录mkdir;

当“operation”项中存储的差分操作标识为整数3时,代表该具体差分操作为创建硬链接ln;

当“operation”项中存储的差分操作标识为整数4时,代表该具体差分操作为创建软链接lns;

当“operation”项中存储的差分操作标识为整数5时,代表该具体差分操作为删除文件remove;

当“operation”项中存储的差分操作标识为整数6时,代表该具体差分操作为删除目录rmdir;

当“operation”项中存储的差分操作标识为整数7时,代表该具体差分操作为单个普通文件差分patch;

当“operation”项中存储的差分操作标识为整数8时,代表该具体差分操作为创建特殊文件mknod;

当“operation”项中存储的差分操作标识为整数9时,代表该具体差分操作为修改文件属主信息chown;

当“operation”项中存储的差分操作标识为整数10时,代表该具体差分操作为修改文件访问权限chmod;

当“operation”项中存储的差分操作标识为整数11时,代表该具体差分操作为设置文件扩展属性setxattr;

本领域技术人员应能理解上述差分操作标识与各差分操作的对应关系仅为示例,只要是基于差分操作标识用于指示该数据结构file_ops中的具体差分操作方式,对差分操作标识的表示方式,以及和各差分操作的对应方式作任何变化都可适用于本发明,故也应包含在本发明保护范围以内。

此外,“source”项中存储的是差分操作对应在第一目录中的文件标识,作为示例地,若某一差分操作需要对第一目录中文件名为“a”的文件进行处理,则“source”项中可以存储该文件名称“a”。

同理,“target”项中存储的是差分操作对应在第二目录中的文件标识,作为示例地,若第二目录中某个文件名为“a”的文件在第一目录中不存在,则为该差分操作中,可以在“target”项中可以存储该文件名称“a”。

“data”项中存储的是差分操作对应内容数据或内容数据的文件索引,即差分操作具体需要添加、修改或更新的内容数据可以在“data”项中获取,具体而言,“data”项中可以直接存储的是差分操作对应内容数据;或者,“data”项中存储的是差分操作对应内容数据的文件索引,差分操作对应内容数据以文件的形式存储在差分包中,使用时通过读取文件索引进行调用。

在后一种情况下,在步骤S120之前,需要针对任一差分操作,根据该差分操作对应内容数据生成相应的文件,并创建文件索引。

具体而言,按照预定的命名规则对已生成的各个文件进行命名,并以命名后的各个文件的文件名称与索引编号相对应的方式创建文件索引。

例如,采用16进制对各个文件进行编号并命名,保证各个文件名字长度一致。例如,文件名为“00000005”表示该文件是5号文件,创建索引编号为5的文件索引,存储到“data”项中。又例如,文件名为“00000011”表示该文件是17号文件,创建索引编号为17的文件索引,存储到“data”项中。

可以理解,并不是每一种差分操作都需要用到“data”项,在无需使用“data”项时,可以将data设置成0。

在步骤S130中,依据多个差分操作分别对应的数据结构生成差分包。

具体地,将多个差分操作分别对应的数据结构及已生成的多个文件进行存储,以生成差分包。

利用上述数据结构模板file_ops描述第一目录和第二目录之间每个差分操作,如图2所示,把所有差分操作分别对应的数据结构排列好,生成总控文件.info.dat,加上所有内容数据对应的各个文件,就最终形成了第一目录和第二目录的差分包。

考虑到某些具有关联关系的至少两个差分操作之间可能会有先后顺序的要求,本发明实施例中,针对具有关联关系的至少两个差分操作,按照该至少两个差分操作的预定执行顺序,将多个差分操作分别对应的数据结构进行排列,以生成差分包。

具体而言,将具有关联关系的至少两个差分操作按照预定执行顺序进行排列,并将每一组已排列好的具有关联关系的差分操作随机地与其他无关联关系的差分操作排列在一起。或者,将每一组具有关联关系的至少两个差分操作按照预定执行顺序分别进行排列后,按照一定顺序规则排列所有差分操作。

为了更清楚的解释本发明实施例,以下将举例介绍实际应用中上述数据结构模板file_ops如何描述具体的一个差分操作或具有关联关系的至少两个差分操作:

示例一:若第一目录和第二目录中都存在文件a,并且二者的内容一样,除了文件访问权限之外的其他属性也都一样。明显可知,只要在差分操作中携带文件访问权限的处理就可以有效制作出差分包。则通过数据结构模板file_ops描述该差分操作:

结合上文的示例,当“operation”项中存储的差分操作标识为整数10时,代表该具体差分操作为修改文件访问权限chmod,那么对该差分操作的描述可以这样理解:只要将第一目录中的“a”文件作chmod操作,读取99号文件中的内容,修改文件访问权限,就可以生成和第二目录完全一致的结果,而99号文件中的内容已预先创建好,与第二目录中的文件a的访问权限相关。

示例二:若示例一中文件a除了访问权限不同,文件扩展属性也不相同,那么需要通过数据结构模板file_ops生成两个数据结构来描述该差分操作:

结合上文的示例,当“operation”项中存储的差分操作标识为整数10时,代表该具体差分操作为修改文件访问权限chmod,当“operation”项中存储的差分操作标识为整数11时,代表该具体差分操作为设置文件扩展属性setxattr,那么对该差分操作的描述可以这样理解:将第一目录中的“a”文件作chmod操作,读取99号文件中的内容,修改文件访问权限,并且对第一目录中的“a”文件作setxattr操作,读取100号文件中的内容,修改文件扩展属性,就可以生成和第二目录完全一致的结果,而99号文件中的内容已预先创建好,与第二目录中的文件a的访问权限相关,100号文件中的内容也已预先创建好,与第二目录中的文件a的扩展属性相关。

需要说明的是,这两个差分操作可以不区分先后顺序,无论先执行哪项操作所达到的效果相同。但是,有些差分操作必须讲究先后顺序,如下介绍。

示例三:若第二目录中的一个文件a在第一目录中不存在,那么在制作差分包时需要描述如下数据结构:

可以这样理解,这个差分过程需要四个差分操作:copy、chown、chmod和setxattr,这时就会有先后顺序的要求,必须先执行copy才能够执行其他差分操作。

本发明实施例提供的差分包的生成方法,利用预定的数据结构来存储每个差分操作的操作数据信息,使得生成的差分包能够涵盖各种复杂的差分情况,显著提高差分包的使用性能。

本发明实施例还提供了一种差分包的生成装置,如图3所示,包括:

获取模块310,用于获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;

数据结构生成模块320,用于针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;

差分包生成模块330,用于依据多个差分操作分别对应的数据结构生成差分包。

其中,操作数据信息包括:差分操作标识;差分操作对应在第一目录中的文件标识;差分操作对应在第二目录中的文件标识;差分操作对应内容数据或内容数据的文件索引。

具体地,差分操作包括以下任一项:拷贝文件内容;创建目录;创建硬链接;创建软链接;删除文件;删除目录;单个普通文件差分;创建特殊文件;修改文件属主信息;修改文件访问权限;设置文件扩展属性。

具体地,本发明实施例提供的生成装置还包括文件生成模块,用于在基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构的步骤之前,针对任一差分操作,根据该差分操作对应内容数据生成相应的文件,并创建文件索引。

可选地,差分包生成模块330具体用于将多个差分操作分别对应的数据结构及已生成的多个文件进行存储,以生成差分包。

可选的,文件生成模块具体用于按照预定的命名规则对已生成的各个文件进行命名,并以命名后的各个文件的文件名称与索引编号相对应的方式创建文件索引。

可选地,差分包生成模块330具体用于针对具有关联关系的至少两个差分操作,按照该至少两个差分操作的预定执行顺序,将多个差分操作分别对应的数据结构进行排列,以生成差分包。

本发明实施例所提供的装置可以为设备上的特定硬件或者加载于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。

通过获取第一目录与第二目录差分过程中的多个差分操作分别对应的操作数据信息;针对任一差分操作,基于预定的数据结构模板,根据该差分操作对应的操作数据信息生成相应的数据结构;依据多个差分操作分别对应的数据结构生成差分包,利用预定的数据结构来存储每个差分操作的操作数据信息,使得生成的差分包能够涵盖各种复杂的差分情况,显著提高差分包的使用性能。

本发明实施例还提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的方法。

该终端可以为包括计算机、手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备。

其中,存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器是控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据,从而对终端进行整体监控。可选的,处理器可包括一个或多个处理单元;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。

本发明实施例还提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的方法。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

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

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