发明内容
有鉴于此,本发明提供一种回滚方法和回滚装置,能够快速有效地回滚到应用对象重装前的状态。
为解决上述问题,本发明提供一种回滚方法,包括:在接收到一回滚指令后,获取备份目录,所述备份目录是由原应用对象转换成新应用对象时确定的备份目录,所述备份目录中包括:所述原应用对象转换成所述新应用对象时删除的文件以及被替换的文件;将所述备份目录中的文件移动或拷贝到所述新应用对象中,以实现应用对象的回滚。
优选的,所述获取备份目录之前还包括:获取所述原应用对象对应的恢复文件列表;根据所述恢复文件列表,获取所述原应用对象中存在而所述恢复文件列表中不存在的第一文件,以及所述原应用对象与所述恢复文件列表不同的第二文件;将所述第一文件和所述第二文件备份到所述备份目录中,所述第一文件即所述原应用对象转换成所述新应用对象时删除的文件,所述第二文件即所述原应用对象转换成所述新应用对象时被替换的文件。
优选的,所述获取备份目录之前还包括:获取所述原应用对象对应的关键文件列表;将所述关键文件列表中的文件备份到所述备份目录中。
优选的,所述恢复文件列表和所述关键文件列表是由一服务器根据所述原应用对象的环境信息从数据库中选择并发送的。
优选的,所述获取备份目录之前还包括:记录所述原应用对象中的文件的长文件名和短文件名的对应关系;所述将所述备份目录中的文件移动或拷贝到所述新应用对象中之后还包括:根据记录的所述对应关系,将当前应用对象中的文件的短文件名恢复至所述原应用对象转换成所述新应用对象之前的短文件名。
优选的,所述获取备份目录之前还包括:记录所述原应用对象中的文件的链接信息;所述将所述备份目录中的文件移动或拷贝到所述新应用对象中之后还包括:根据记录的所述文件的链接信息,将当前应用对象中的文件的链接信息恢复至所述原应用对象转换成所述新应用对象之前的链接信息。
优选的,所述获取备份目录之前还包括:记录所述原应用对象中的文件的权限信息;所述将所述备份目录中的文件移动或拷贝到所述新应用对象中之后还包括:根据记录的所述权限信息,将当前应用对象中的文件的权限信息恢复至所述原应用对象转换成所述新应用对象之前的权限信息。
本发明还提供一种回滚装置,包括:第一获取模块,用于在接收到一回滚指令后,获取备份目录,所述备份目录是由原应用对象转换成新应用对象时确定的备份目录,所述备份目录中包括:所述原应用对象转换成所述新应用对象时删除的文件以及被替换的文件;处理模块,用于将所述备份目录中的文件移动或拷贝到所述新应用对象中,以实现应用对象的回滚。
优选的,所述回滚装置还包括:第二获取模块,用于获取所述原应用对象对应的恢复文件列表;第三获取模块,用于根据所述恢复文件列表,获取所述原应用对象中存在而所述恢复文件列表中不存在的第一文件,以及所述原应用对象与所述恢复文件列表不同的第二文件;第一备份模块,用于将所述第一文件和所述第二文件备份到所述备份目录中,所述第一文件即所述原应用对象转换成所述新应用对象时删除的文件,所述第二文件即所述原应用对象转换成所述新应用对象时被替换的文件。
优选的,所述回滚装置还包括:第四获取模块,用于获取所述原应用对象对应的关键文件列表;第二备份模块,用于将所述关键文件列表中的文件备份到所述备份目录中。
优选的,所述回滚装置还包括:第一记录模块,用于记录所述原应用对象中的文件的长文件名和短文件名的对应关系;第一恢复模块,用于根据记录的所述对应关系,将当前应用对象中的文件的短文件名恢复至所述原应用对象转换成所述新应用对象之前的短文件名。
优选的,所述回滚装置还包括:第二记录模块,用于记录所述原应用对象中的文件的链接信息;第二恢复模块,用于根据记录的所述文件的链接信息,将当前应用对象中的文件的链接信息恢复至所述原应用对象转换成所述新应用对象之前的链接信息。
优选的,所述回滚装置还包括:第三记录模块,用于记录所述原应用对象中的文件的权限信息;第三恢复模块,用于根据记录的所述权限信息,将当前应用对象中的文件的权限信息恢复至所述原应用对象转换成所述新应用对象之前的权限信息。
本发明具有以下有益效果:
对原应用对象转换成新应用对象时删除的文件以及被替换的文件进行备份,根据上述备份文件能够快速有效地实现应用对象的回滚。
对原应用对象的关键文件进行备份,解决了应用对象回滚时关键文件不兼容的问题。
对原应用对象的文件的长文件名和短文件名的对应关系进行备份,以保证应用对象回滚时文件的长文件名和短文件名相匹配。
对原应用对象的文件的链接信息进行备份,以保证应用对象回滚时能够链接到正确的文件。
对原应用对象的文件的权限信息进行备份,以避免在原应用对象转换成新应用对象时文件的权限信息发生改变,而导致应用对象回滚后无法正常进入应用对象或者应用对象发生异常的问题。
通过与远程服务器配合,能够方便快速地实现应用对象的重装和回滚。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
如图1所示为本发明的回滚方法的一流程示意图,该回滚方法包括以下步骤:
步骤101,在接收到一回滚指令后,获取备份目录,备份目录是由原应用对象转换成新应用对象时确定的备份目录,备份目录中包括:原应用对象转换成新应用对象时删除的文件以及被替换的文件;
步骤102,将备份目录中的文件移动或拷贝到新应用对象中,以实现应用对象的回滚。
在回滚时,可以将备份目录中的文件拷贝到新应用对象中,该种方式下,在应用对象回滚后,备份目录中的文件仍然会保留。另外,为了节省存储空间,还可以将备份目录中的文件直接移动到新应用对象中。
在将备份目录中的文件移动或拷贝到新应用对象中时,如果新应用对象中存在与备份目录中的文件相同的文件,则直接将该相同的文件覆盖即可。
上述应用对象可以是操作系统或其他应用程序,以下实施例中以应用对象是操作系统为例,对本发明的回滚方法进行详细说明。
如图2所示为本发明的操作系统的回滚方法的一流程示意图,包括以下步骤:
步骤201,获取操作系统对应的恢复文件列表;
该恢复文件列表记录的是用于重装该操作系统的系统文件的名称,该恢复文件列表以及其对应的系统文件可以存储于本地,也可以存储于远程服务器上,或者存储于一光盘中。当系统文件列表以及其对应的系统文件存储于远程服务器上时,还需要与服务器进行交互,以下载该恢复文件列表以及其对应的系统文件。
步骤202,对原操作系统文件进行扫描,并根据恢复文件列表对原操作系统文件进行验证,获取以下几种文件:原应用对象中存在而恢复文件列表中不存在的第一文件,原应用对象与恢复文件列表不同的第二文件,以及原应用对象中不存在而恢复文件列表中存在的第三文件;
原操作系统文件是指原操作系统所在的硬盘分区中的文件,通常包括:系统文件和用户数据文件。
步骤203,将第一文件和第二文件备份到备份目录中,第一文件即上述实施例中提到的原应用对象转换成新应用对象时需要删除的文件,第二文件即上述实施例中提到的原应用对象转换成新应用对象时被替换的文件;
具体的,是将第一文件移动到备份目录中,将第二文件拷贝到备份目录中。在将文件移动或拷贝到备份目录时,需要同时记录文件在原操作系统中的文件路径,以便回滚时能够根据记录的文件路径,将该文件移动或拷贝到新操作系统中的正确位置。
步骤204,获取上述第二文件和第三文件,并利用第二文件和第三文件更新原操作系统,以完成原操作系统到新操作系统的转换;
上述步骤中已经提到,恢复文件列表对应的系统文件可以存储于本地、光盘或者服务器上,当恢复文件列表对应的系统文件存储于服务器上时,还需要从服务器上下载系统文件,如果将该恢复文件列表中所有的系统文件均下载下来的话,将会极大地增加系统的负担,因此,优选的,可以仅下载以下两种文件:原应用对象与恢复文件列表不同的第二文件,以及原应用对象中不存在而恢复文件列表中存在的第三文件,原应用对象与恢复文件列表中相同的文件则无需下载。此外,还存在另外一种优选的下载方式,即在下载系统文件之前,针对原操作系统与恢复文件列表不同的第二文件,可以首先在本地(本地硬盘或光盘)上搜索,判断本地是否存储有相同特征的文件,如果本地存储有相同特征的文件,则从本地获取即可,无需到服务器上下载,该种方式能够进一步减少下载时的网络负担。
完成上述第二文件和第三文件的下载后,可以利用下载的文件替换原操作系统文件,并重新配置操作系统,以完成原操作系统到新操作系统的转换,也即完成操作系统的重装。
步骤205,接收到回滚指令后,将备份目录中的文件移动或拷贝到新操作系统中,以完成操作系统的回滚。
具体的,将备份目录中的文件按照之前记录的其在原操作系统中的文件路径,移动或拷贝到新操作系统中的正确位置,当新操作系统中存在与备份目录中的文件相同的文件时,直接将新操作系统中相同文件覆盖即可。
通过上述实施例提供的回滚方法,当重装后的新操作系统没有达到用户期望的状态时,可以根据上述回滚方法完成操作系统的回滚,恢复到重装前操作系统的状态。
在重装过程中,可能会由于补丁升级等原因,使得新操作系统的系统关键文件被修改,如果在操作系统重装前没有对该系统关键文件进行备份,则在操作系统回滚时,很可能会导致回滚后的文件与该系统关键文件不匹配,从而使得回滚后的操作系统无法正常运行。
为了解决上述问题,本发明实施例中,可以在重装操作系统之前,获取一系统关键文件列表,并将系统关键文件列表中的原操作系统文件备份到备份目录中。也就是说,对系统关键文件进行备份。系统关键文件是指操作系统正常运行时必须的文件,可以存储于本地,也可以存储于远程服务器中,或者存储于光盘中。在操作系统回滚时,可以将备份目录中的系统关键文件移动或拷贝新操作系统中,以避免操作系统回滚后出现文件不兼容的问题。
每一文件均具有一长文件名和一短文件名,长文件名可以超过8个字符,短文件名不能超过8个字符,短文件名是根据文件的长文件名、生成时间等因素生成,举例来说,C:\Program Files目录下的Microsoft Games的短文件名是MICROS~1,Microsoft Office的短文件名是MICROS~3。在操作系统回滚过程中,如果将被移动到备份目录中文件再移动回来的话,其短文件名可能会发生变化,从而导致该文件无法被找到。
为了解决上述问题,本发明实施例中,可以在重装操作系统之前,记录原操作系统文件的长文件名和短文件名的对应关系,在操作系统回滚时,根据记录的对应关系,将当前操作系统中的文件的短文件名恢复至原操作系统转换成新操作系统之前的短文件名。
具体的,可以通过两种方式恢复原操作系统文件的短文件名,一种方式是在回滚后直接修改当前操作系统文件的短文件名,另一种方式是根据备份目录中的原操作系统文件的短文件名的生成顺序,将备份目录中的原操作系统文件依次移动或拷贝回去。
在操作系统中,一个文件可能会存在多个版本,举例来说,winsxs目录里包含了3个版本的gdiplus.dll文件,system32目录里也包括了1个gdiplus.dll文件,system32目录里的gdiplus.dll文件指向winsxs目录里的其中1个版本的gdiplus.dll文件,该指向即是system32目录里的gdiplus.dll文件的链接信息。在重装操作系统后,文件的链接信息可能会发生变化,因此,在操作系统重装前,可以记录system32目录里的gdiplus.dll文件的链接信息,在操作系统回滚时还原其链接信息。
也就是说,可以在重装操作系统之前,记录原操作系统文件的链接信息;在操作系统回滚时,根据记录的文件链接信息,将当前操作系统中的文件的链接信息恢复至原操作系统转换成新操作系统之前的链接信息。
在重装操作系统时,一些文件的权限可能会发生变化,举例来说,在操作系统重装前,C:\windows\a1文件的所有者是administrator,在操作系统重装后,administrator的用户是新建的,所以其SID(Security Identifiers,安全标识符)会发生变化,从而导致a1文件之前的权限丢失。在操作系统回滚时,可能会导致进不了操作系统,或者操作系统异常等情况。
为了解决上述问题,本发明实施例中,可以在重装操作系统之前,记录原操作系统文件的权限信息;在操作系统回滚时,根据记录的权限信息,将当前操作系统中的文件的权限信息恢复至原操作系统转换成新操作系统之前的权限信息。
由于原操作系统文件数量较多,如果通过枚举的方式记录所有原操作系统文件的权限信息,将会浪费系统资源。由于一个文件目录下的文件的权限通常相同,因此,本发明实施例中,可以仅记录文件目录的权限信息,而不逐个记录该目录下的每个文件的权限信息。
上述实施例中已经提到,可以通过与远程服务器交互的方式执行操作系统的回滚,下面将对该种方式进行详细说明。
本发明实施例中的远程服务器具有一数据库,该数据库中存储有多个版本的系统文件以及其对应的恢复文件列表和关键文件列表。
基于上述服务器,如图3所示,本发明的操作系统的回滚方法包括以下步骤:
步骤301,在需要重装操作系统时,向服务器发送本地操作系统(即原操作系统)的环境信息,该环境信息包括原操作系统的版本、SP(服务提供商)版本、语言、处理器类型(X86、X64等)以及安装的软件和补丁等。
步骤302,接收服务器根据提供的环境信息从数据库中选择并发送的与原操作系统相匹配的恢复文件列表和关键文件列表。
步骤303,扫描原操作系统文件,并根据恢复文件列表对原操作系统文件进行验证,得到待下载文件列表和待备份文件列表,待下载的文件包括:原操作系统与恢复文件列表不同的第二文件以及原操作系统中不存在而恢复文件列表中存在的第三文件,待备份的文件包括:关键文件列表中的文件、原操作系统中存在而恢复文件列表中不存在的第一文件,以及原操作系统与恢复文件列表不同的第二文件。
步骤304,将待备份文件列表中的文件备份到备份目录中。
步骤305,根据待下载文件列表从服务器下载系统文件,并利用下载的系统文件更新原操作系统,完成原操作系统到新操作系统的转换,即完成操作系统的重装。
步骤306,在接收到回滚指令后,将备份目录中的文件移动或拷贝到新操作系统,完成操作系统的回滚。
为方便理解,下面将举例进行说明。
假设原操作系统文件包括:A、B、C、E,从服务器下载的恢复文件列表包括:A1、B、C、D,关键文件列表包括:A和B。
扫描原操作系统文件,并根据恢复文件列表对原操作系统文件进行验证,得到以下验证结果:
1)原操作系统文件中不包括D,需要从服务器下载;
2)原操作系统文件中的A和恢复文件列表中的A1不符合,需要从服务器下载,同时将A备份到备份目录中;
3)原操作系统文件E不在恢复文件列表中,将E移动到备份目录中;
4)将关键文件A、B备份到备份目录中。
从上述内容可知,备份目录中包括:A、B、E。
在上述备份过程中,还需要记录原操作系统的文件的长文件名和短文件名的对应关系、链接信息以及权限信息。
根据从服务器下载的A1和D,重装操作系统,完成原操作系统到新操作系统的转换,新操作系统文件包括:A1、B、C、D。
操作系统回滚时,将备份目录中的A、B、E移动或拷贝到新操作系统,并根据记录的原操作系统的文件的长文件名和短文件名的对应关系、链接信息、以及权限信息,将当前操作系统文件的短文件名、链接信息以及权限信息恢复到原操作系统转换成新操作系统之前的短文件名、链接信息以及权限信息,至此,完成操作系统的回滚,回滚后的操作系统文件包括:A、B、C、D、E。
上述实施例中是以操作系统为例对本发明的回滚方法进行说明,当然,上述方法也可以应用于其他应用程序的回滚,例如在应用程序的升级重装过程中,可以在重装前对应用程序的相关文件(关键文件、原应用程序转换为新应用程序时需要删除的文件以及被替换的文件)备份到一备份目录中,同时记录该文件在原应用程序中的文件路径,此外,还可以记录应用程序中的文件的长文件名和短文件名的对应关系、文件的链接信息以及文件的权限信息等信息,然后再进行升级重装。当需要回滚时,将备份目录中的文件直接移动或拷贝到新应用程序中,以完成应用程序的回滚。
对应于上述回滚方法,本发明还提供一种回滚装置,如图4所示,该回滚装置包括:第一获取模块,用于在接收到一回滚指令后,获取备份目录,备份目录是由原应用对象转换成新应用对象时确定的备份目录,备份目录中包括:原应用对象转换成新应用对象时删除的文件以及被替换的文件;处理模块,用于将备份目录中的文件移动或拷贝到新应用对象中,以实现应用对象的回滚。
为了确定上述备份目录,本发明的回滚装置还包括:第二获取模块,用于获取原应用对象对应的恢复文件列表;第三获取模块,用于根据恢复文件列表,获取原应用对象中存在而恢复文件列表中不存在的第一文件,以及原应用对象与恢复文件列表不同的第二文件;第一备份模块,用于将第一文件和第二文件备份到备份目录中,第一文件即原应用对象转换成新应用对象时删除的文件,第二文件即原应用对象转换成新应用对象时被替换的文件。
该恢复文件列表记录的是用于重装该应用对象的恢复文件的名称,该恢复文件列表以及其对应的恢复文件可以存储于本地,也可以存储于远程服务器上,或者存储于一光盘中。当系统文件列表以及其对应的恢复文件存储于远程服务器上时,还需要与服务器进行交互,以下载该恢复文件列表以及其对应的恢复文件。
在应用对象重装过程中,可能会由于补丁升级等原因,使得新应用对象的关键文件被修改,如果在应用对象重装前没有对该关键文件进行备份,则在应用对象回滚时,很可能会导致回滚后的文件与该关键文件不匹配,从而使得回滚后的应用对象无法正常运行。
为了解决上述问题,本发明实施例的回滚装置还包括:第四获取模块,用于获取原应用对象对应的关键文件列表;第二备份模块,用于将关键文件列表中的文件备份到备份目录中。
为了避免应用对象回滚后,当前应用对象中的文件的长文件名与短文件名不匹配的问题,本发明的回滚装置还包括:第一记录模块,用于记录原应用对象中的文件的长文件名和短文件名的对应关系;第一恢复模块,用于根据记录的对应关系,将当前应用对象中的文件的短文件名恢复至原应用对象转换成新应用对象之前的短文件名。
为了避免应用对象回滚后,当前应用对象中的文件的链接信息无法指向真实的文件,本发明的回滚装置还包括:第二记录模块,用于记录原应用对象中的文件的链接信息;第二恢复模块,用于根据记录的文件的链接信息,将当前应用对象中的文件的链接信息恢复至原应用对象转换成新应用对象之前的链接信息。
为了避免应用对象重装后,新应用对象中的文件的权限信息发生变化,本发明的回滚装置还包括:第三记录模块,用于记录原应用对象中的文件的权限信息;第三恢复模块,用于根据记录的权限信息,将当前应用对象中的文件的权限信息恢复至原应用对象转换成新应用对象之前的权限信息。
上述应用对象可以是操作系统,也可以是其他应用程序。
此说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。