CN114816862A - 数据恢复方法和装置、计算设备和可读存储介质 - Google Patents
数据恢复方法和装置、计算设备和可读存储介质 Download PDFInfo
- Publication number
- CN114816862A CN114816862A CN202210732971.XA CN202210732971A CN114816862A CN 114816862 A CN114816862 A CN 114816862A CN 202210732971 A CN202210732971 A CN 202210732971A CN 114816862 A CN114816862 A CN 114816862A
- Authority
- CN
- China
- Prior art keywords
- data
- user
- module
- application program
- mapping 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 238000011084 recovery Methods 0.000 title claims abstract description 57
- 230000006870 function Effects 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 44
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000036316 preload Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000005266 casting Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据恢复方法和装置、计算设备和可读存储介质,涉及计算***应用程序数据恢复领域,可以解决现有数据恢复技术容易丢失数据的问题。数据恢复方法包括:拦截***发出的和应用程序崩溃有关的信号;运行与所述信号有关的信号处理函数:建立所述应用程序的子进程;将所述子进程挂载到所述应用程序;通过所述子进程弹出搜索框;通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示在结果列表中;接收用户对结果列表的选择、复制操作,并保存用户复制的数据。根据本发明技术方案,可以在程序崩溃之前达到拯救数据的目的,且不存在丢失数据的风险。
Description
技术领域
本发明涉及计算机***数据恢复领域,尤其涉及一种数据恢复方法和装置、计算设备和可读存储介质。
背景技术
应用程序在计算机***中运行时,可能由于发生崩溃而导致数据丢失。为了应对这种情况,通常需要部署数据恢复***;或者某些应用程序本身自带数据恢复功能来避免数据丢失的情况出现。比如通常的文本编辑软件如Office软件、WPS软件等都会自带一定的数据恢复功能,以保证在程序运行发生崩溃的情况下,用户下次打开这个文档时能恢复到上次编辑的状态,避免数据丢失,用户又得从头开始重新编辑。
通常这类程序自带的数据恢复功能的实现方式为:在用户打开一个新文件的同时,在后台某个固定位置同步生成一个对应的文件,然后用户在编辑文档的过程中,程序后台会定时将文档的数据备份到后台对应文件。这样万一程序在某个时刻突然发生崩溃导致退出,在用户下次重新打开这个文档的时候,后台程序会先检测后台对应的文件是否已经存在,如果存在,则先读取后台保存的文件内容。这样用户就可以从上次程序崩溃时的状态继续编辑而不是从头开始重新编辑,在一定程度上避免了数据的丢失。
无论是外部部署的数据恢复***还是软件本身自带的数据恢复功能,通常都是通过备份当前应用程序的数据来实现数据恢复的。然而,数据备份到后台文件就会涉及到大量数据的读写、拷贝操作。这些操作会影响程序运行时的性能,因此备份的频率不宜过于频繁。然而,这样定时备份恢复会有间隔期,在备份间隔期如果程序发生崩溃,这个期间用户编辑的数据是无法被恢复的。这个期间丢失的数据量根据各个不同软件的实现方案不同会有差异,备份频率高,丢失的数据量就小一些,频率低的丢失的数据量就会大一些。为了减少丢失的数据量,通常的备份功能都会提高备份的频率并且只进行增量的备份(备份功能只保存当前修改的数据)。而实际情况是当前市面上并非所有软件都做到增量备份,甚至有很多的文本编辑软件连基本的数据恢复功能都没有。另外无论备份的频率如何,始终存在丢失数据的可能性。
此外,在后台备份数据始终对应用程序的性能是一种额外的开销。
另外,根据这种方式的操作流程,用户需要重新打开文件,才会被提示是否需要将文件恢复到上次异常终止的状态,在操作流程上会有割裂感、不连续。而且还存在一个比较极端的情况:如果后台的备份文件被用户误删除了,就会导致丢失的数据无法恢复。
发明内容
为此,本发明提供了一种数据恢复方法和装置、计算设备和可读存储介质,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的第一方面,提供了一种数据恢复方法,由加载到应用程序中的共享库执行,所述数据恢复方法包括:拦截***发出的和应用程序崩溃有关的信号;运行与所述信号有关的信号处理函数,所述信号处理函数提前注册在共享库中,且用于执行:建立所述应用程序的子进程;将所述子进程挂载到所述应用程序;通过所述子进程弹出搜索框;通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示在结果列表中;接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
可选地,数据恢复方法还包括:在保存用户复制的数据之后,重新抛出和应用程序崩溃有关的信号,以使所述应用程序退出。
可选地,在本发明的数据恢复方法中,根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示的步骤包括:读取预定大小的内存映射文件中的数据;判断所述预定大小的内存映射文件中的数据与用户输入是否匹配;如果匹配,将所述预定大小的内存映射文件中的数据加入结果列表中;如果不匹配,直接执行下一步;判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
可选地,数据恢复方法还包括:接收用户对结果列表中特定结果的选择输入,展示与所述特定结果对应的十六进制数据列表和字符列表,其中,接收用户对结果列表的选择、复制操作包括:接收用户对所述字符列表的选择、复制操作。
根据本发明的第二方面,提供了一种数据恢复装置,设于加载到应用程序的共享库中,包括:拦截模块,用于拦截***发出的和应用程序崩溃有关的信号;运行模块,用于运行与所述信号有关的信号处理函数,所述信号处理函数提前注册在所述共享库中,且用于启动数据恢复装置内的以下模块:建立模块,用于建立所述应用程序的子进程;挂载模块,用于将所述子进程挂载到所述应用程序;弹出模块,用于通过所述子进程弹出搜索框;遍历模块,用于通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据;展示模块,用于将与用户输入匹配的数据展示在结果列表中;保存模块,用于接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
可选地,数据恢复装置还包括抛出模块,用于在保存用户复制的数据之后,重新抛出和应用程序崩溃有关的信号,以使所述应用程序退出。
可选地,在本发明的数据恢复装置中,遍历模块包括:读取模块,用于读取预定大小的内存映射文件中的数据;第一判断模块,用于判断所述预定大小的内存映射文件中的数据与用户输入是否匹配,如果匹配,触发加入模块;如果不匹配,触发第二判断模块;加入模块,用于将所述预定大小的内存映射文件中的数据加入结果列表中;第二判断模块,用于判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
可选地,在本发明的数据恢复装置中,展示模块还用于接收用户对结果列表中特定结果的选择输入,展示与所述特定结果对应的十六进制数据列表和字符列表,所述保存模块用于接收用户对所述字符列表的选择、复制操作,并保存用户复制的数据。
根据本发明的第三方面,提供了一种计算设备,包括:至少一个处理器和存储有程序指令的存储器;当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如上所述的方法。
根据本发明的第四方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的方法。
根据本发明技术方案,可以在程序崩溃之前达到拯救数据的目的,且由于当前的崩溃进程并未退出,因此所有输入过的数据都可以恢复,不存在丢失数据的风险。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明实施方式的技术方案的整体架构图;
图2示出根据本发明实施方式的数据恢复方法的示意性流程图;
图3示出根据本发明实施方式的数据恢复方法中的遍历过程的具体实现流程图;
图4示出在子进程弹出的搜索框中进行搜索后得到的结果展示图;
图5示出根据本发明实施方式的数据恢复装置的示意性框图;
图6示出根据本发明实施方式的数据恢复装置中的遍历模块的示意性框图;
图7示出了根据本发明一个实施方式的计算设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明技术方案的设计思路为:将支持数据恢复的一段程序(数据恢复程序)加载到所有可执行程序的进程内运行,让原本不支持数据恢复的软件也能够实现数据恢复的功能。
图1示出本发明技术方案的整体构架图,其实现过程为:当一个应用程序快发生崩溃时,***会向该程序发送信号,这些信号的默认行为是导致程序崩溃。根据本发明技术方案的数据恢复程序拦截这些信号。
在Linux运行环境下,该数据恢复程序可以以.so共享库(比如图1所示的SaveData.so)的形式出现。该库以外挂的方式被加载到可执行程序内。下面以Linux***环境为例来描述本发明,然而应理解本发明不限于该实现环境。本领域技术人员都能理解该方法同样能在其他种类的操作***,例如windows操作***上实现,而不需要付出创造性的劳动。
也就是说,该方法可以运行为一个外部的.so共享库,该共享库可以放在***任何目录下,采用外部注入的方式运行到用户程序中。
下面介绍加载.so共享库的大致过程。应用程序在运行时需要用到.so共享库。为了使应用程序依赖于根据本发明的.so共享库,需要通过***已有体系进行调整,将.so共享库加载到应用程序里运行。以Linux运行环境为例,在加载时可以通过动态加载器ld-linux.so来修正应用程序引用的.so库的路径。该动态加载器支持一个***定义的环境变量LD_PRELOAD。通过在应用程序运行时指定该环境变量,可以达到加载指定库的目的。LD_PRELOAD还有另外一种运行方式:通过在***路径下创建一个配置文件/etc/ld.so.preload,在该配置文件中写入一个待加载的.so库(SaveData.so)的路径,这样就可以在***任何应用程序加载前都会预加载这个特定的库。
此外,可以通过编译选项提供一个初始化函数,在.so共享库加载到应用程序中时执行该初始化函数,从而实现自动执行.so共享库的目的。以上以Linux运行环境为例进行了说明,本发明还可以在其他操作***运行环境下实施,比如在Windows下,此时,Windows操作***的dll库具有Dllmain入口函数,不需要像Linux下的so共享库一样需要编译初始化函数。
以这种方式提供一个外部库,然后在将该库加载到应用程序中时,在该库中对注入的程序注册信号处理函数,该信号处理函数用于处理与崩溃有关的信号。在拦截了上述导致程序崩溃的信号之后,***自动调用该信号处理函数以执行其定义的行为。该函数的行为是自定义的,且导致创建一个新的子进程,子进程会挂载到处于崩溃状态的父进程,该挂载可通过ptrace***调用来进行。通过该子进程来访问当前崩溃进程的内存数据。同时,会弹出一个界面框供用户输入想要恢复的数据内容,用户点击搜索按钮之后,会在当前崩溃进程的内存数据中搜索到对应的数据,并显示到列表框中。然后,用户可以选择正确的数据进行复制并保存。这样就获取了应用程序崩溃时的执行权,可以获得以下益处:与具体的应用程序无关,易于实现,不会对现有程序造成修改。
如上所述,应用程序在运行时即将发生崩溃,则会进入到.so库中注册的信号处理函数,这样,在应用程序崩溃时,根据本发明实施方式的技术方案会中断崩溃,开始执行子进程,且在执行完毕之后重新抛出崩溃信号,继续崩溃进程,从而在程序崩溃之前达到拯救数据的目的。
以上整个操作的流程是连续的,用户容易记住自己需要恢复的数据内容。并且,由于当前的崩溃进程并未退出,因此所有输入过的数据都可以恢复,不存在丢失数据的风险。
根据本发明实施方式,提供一种数据恢复方法。图2示出根据本发明实施方式的数据恢复方法的示意性流程图。如图2所示,该方法包括如下步骤。
S210,拦截***发出的和应用程序崩溃有关的信号。
在应用程序要发生崩溃时,***会给指定的应用程序发送信号。如果程序没有自定义信号处理函数,会按照***提供的默认方式处理,比如SIGSEGV、SIGABRT、SIGILL、SIGFPE、SIGBUS、SIGTRAP这些信号的默认处理行为就是导致应用程序崩溃。
S220,运行与所述信号有关的信号处理函数,所述信号处理函数进行以下操作:建立所述应用程序的子进程;将所述子进程挂载到所述应用程序;通过所述子进程弹出搜索框;通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示在结果列表中;接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
如上所述,在.so共享库被加载到应用程序中而自动运行起来时,在共享库中注册了这些信号的处理函数,该注册操作可以通过调用***函数sigaction或signal等来执行。信号处理函数主要处理可能导致应用程序崩溃的异常信号,包括以上所述的SIGSEGV、SIGABRT、SIGILL、SIGFPE、SIGBUS、SIGTRAP。所注册信号处理函数针对的信号不限于以上所列信号,还可以根据帮助文件的描述针对其他异常信号自定义信号处理函数。
这样,在应用程序在运行时发生崩溃的情况下,可以进入.so库中注册的信号处理函数表示的信号处理流程。实践中,计算***会自动调用、启动该信号处理函数。该信号处理函数的行为是自定义的。其行为如上所述,包括:创建一个新的子进程,子进程挂载到处于崩溃状态的父进程,通过子进程弹出一个搜索框。用户可以在该搜索框中输入想恢复的文本数据。用户点击搜索按钮后,子进程接收到用户的输入,将会遍历读取父进程的内存映射文件中的数据,寻找与用户输入匹配(比如进行二进制匹配)的数据,可以将匹配成功的结果通过界面的列表框展示出来。此时用户可以在界面上选择想要恢复的数据,右键复制。子进程接收用户的选择输入、复制输入,并保存用户复制的数据,从而达到恢复数据的目的。
通过以上操作,在应用程序发生崩溃之前,有机会在进程退出之前进行处理操作,并在处理完成后可以重新抛出之前的信号(SIGSEGV、SIGABRT、SIGILL、SIGFPE、SIGBUS、SIGTRAP),以使所述应用程序退出。
在当前进程发生崩溃的时候,对当前进程进行内存数据的读写是不安全的操作,因为当前进程的堆内存可能已经被破坏,任何涉及堆操作的库函数都应该避免调用。并且当进程发生异常的时候尝试在当前栈空间继续处理该异常也是不安全的行为,这里的处理方法是在一个单独的线程进行异常处理,并且只执行很少量的异常处理代码,保证安全性。
根据本发明技术方案,在程序崩溃前获取一次恢复数据的机会,与一般的现有数据恢复功能不同之处在于:一般的现有数据恢复技术是定时备份数据到一个后台文件中,这样就会产生数据磁盘IO的写入。如果数据量很大,会对***性能产生影响。此外,一般的数据恢复技术由于定时备份当前数据,始终存在备份频率的问题,因此会导致丢失部分数据的情况。而根据本发明实施方式的技术方案,在程序要崩溃时对内存数据进行搜索,完全避免了对***性能的影响,且由于是在程序崩溃前获取对内存搜索的机会,此时应用程序并没有退出,因此不存在丢失数据的情况。且由于本发明实施方式技术方案所采用的方式对用户而言在时间上具有连续性,更有利于用户回忆起想要恢复的内容。根据本发明实施方式的技术方案,可以让原本不支持数据恢复功能的应用程序支持数据恢复功能,并且对***没有破坏,适用性广泛。
下面描述内存数据读取的具体实现方式:
在Linux***中/proc/$pid/mem这个路径的文件是进程运行时的内存映像文件($pid表示实际程序的进程id),即一个程序运行时的内存数据文件。通过读取这个文件可以获取一个程序在运行时的内存数据。
打开/proc/$pid/mem这个文件之后,如果直接进行读取操作很可能会导致失败,因为这个文件内的偏移地址和程序的虚拟地址空间的偏移是相同的。Linux***下每个程序在运行时都是具有独立地址空间的虚拟地址,这时就需要访问另一个地址映射文件/proc/$pid/maps来获取虚拟地址映射到实际物理地址的映射关系。
从/proc/$pid/maps文件可以看出,并非所有虚拟地址都被映射到了实际内存,因此直接读取mem文件很可能返回错误。只有访问/proc/$pid/maps标明的已经映射的内存地址段才能正常读取到数据。
除此之外,还可以通过ptrace函数来获取内存数据。
如前所述,在当前进程发生崩溃的情况下,不可以使用访问堆内存的库函数。根据本发明实施方式,在信号处理线程里面开启一个子进程(通过调用***“fork”功能),然后在子进程里面通过ptrace***调用挂载到当前快崩溃的父进程,再通过子进程读取父进程的/proc/$pid/mem文件来获取父进程的内存数据。同时会根据父进程的/proc/$pid/maps文件获取父进程可用的内存段,一个进程映射到内存会有很多不同的段,这里主要搜索数据段、堆内存等,像代码段以及其他库函数的内存段都可以直接排除。
下面描述具体的搜索方法:
当创建子进程,子进程通过ptrace***调用挂载到当前快崩溃的父进程之后,会弹出对话框,此时用户可通过该对话框输入想要查询的关键字。在用户输入希望查询的关键字之后,子进程开始遍历应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据,如图3所示该过程具体地可以包括如下步骤。
S310,读取预定大小的内存映射文件中的数据。该预定大小可以自定义,比如可以是4k。
S320,判断所述预定大小的内存映射文件中的数据与用户输入是否匹配。在此,可以进行二进制层面的匹配,屏蔽语言的差异,比如C语言的字符串以’\0’结尾,这里不考虑结尾字符串,只匹配数据部分。可以按字节进行匹配。
S330,如果匹配,将所述预定大小的内存映射文件中的数据加入结果列表中。如果不匹配,直接执行下一步。
可选地,结果列表可以包含内存映射文件中的数据以及该数据对应的地址。可以将内存数据以字符串格式解析出来,并显示在结果列表中。
S340,判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
当遍历完父进程的内存数据之后,则一次搜索完毕,搜索结果会全部展示在结果列表中。
图4示出搜索结果的展示图。如图4所示,左上方是搜索框,下方即是结果列表。如果用户希望查看结果列表中某个结果的具体数据,点击相应的结果后选择查看数据,图4的中间框可以显示出该结果的16进制数据展示视图,即以16进制显示当前地址的内存数据。可以移动滚动条查看前后的内存数据,右框中会以对应的字符形式显示出来。
当用户找到想要的数据后,可以在结果列表、中间框或右框选择相应的数据,然后右键点击复制,就可以达到恢复数据的目的。
如果用户搜索的是中文字符串,则默认会以utf-8格式进行编码,因为Linux***默认编码就是utf-8,界面本身也提供了额外的编码选择,用户也可以自己选择合适的编码。
根据本发明实施方式,还提供一种数据恢复装置。图5示出该数据恢复装置的示意性框图。如图5所示,该装置包括如下模块。
拦截模块510,用于拦截***发出的和应用程序崩溃有关的信号。
运行模块520,用于运行与所述信号有关的信号处理函数,所述信号处理函数用于启动装置内的以下模块:建立模块530,用于建立所述应用程序的子进程;挂载模块540,用于将所述子进程挂载到所述应用程序;弹出模块550,用于通过所述子进程弹出搜索框;遍历模块560,用于通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据;展示模块570,用于将与用户输入匹配的数据展示在结果列表中;保存模块580,用于接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
当创建子进程,子进程挂载到当前快崩溃的父进程之后,会弹出对话框,此时用户可通过该对话框输入想要查询的关键字。在用户输入希望查询的关键字之后,子进程开始遍历应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据,如图6所示,遍历模块具体地可以包括如下模块。
读取模块610,用于读取预定大小的内存映射文件中的数据。
第一判断模块620,用于判断所述预定大小的内存映射文件中的数据与用户输入是否匹配。如果匹配,触发加入模块。如果不匹配,触发第二判断模块。
加入模块630,用于将所述预定大小的内存映射文件中的数据加入结果列表中。
第二判断模块640,用于判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
当遍历完父进程的内存数据之后,则一次搜索完毕,搜索结果会全部展示在结果列表中。
图5所示的装置还可以包括抛出模块,用于在保存用户复制的数据之后,重新抛出所述和应用程序崩溃有关的信号,以使所述应用程序退出。
所述展示模块570还接收用户对结果列表中特定结果的选择输入,展示与所述特定结果对应的十六进制数据列表和字符列表,所述保存模块580接收用户对所述字符列表的选择、复制操作,并保存用户复制的数据。
根据本发明实施方式的数据恢复装置未详述部分,还请参考以上关于数据恢复方法实施方式的具体描述。
本发明的方法可以在计算设备中执行。计算设备可以是任意具有存储和计算能力的设备,其例如可以实现为服务器、工作站等,也可以实现为桌面计算机、笔记本计算机等个人配置的计算机,或者实现为手机、平板电脑、智能可穿戴设备、物联网设备等终端设备,但不限于此。
图7示出了根据本发明一个实施方式的计算设备的示意图。需要说明的是,图7所示的计算设备仅为一个示例,在实践中,用于实施本发明的方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图7所示的计算设备相同,也可以与图7所示的计算设备不同。实践中用于实施本发明的方法的计算设备可以对图7所示的计算设备的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图7所示,该设备可以包括:处理器710、存储器720、输入/输出接口730、通信接口740和总线750。其中处理器710、存储器720、输入/输出接口730和通信接口740通过总线750实现彼此之间在设备内部的通信连接。
处理器710可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器720可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器720可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器720中,并由处理器710来调用执行。
输入/输出接口730用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口740用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线750包括一通路,在设备的各个组件(例如处理器710、存储器720、输入/输出接口730和通信接口740)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器710、存储器720、输入/输出接口730、通信接口740以及总线750,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明实施方式还提供一种非暂态可读存储介质,存储有指令,所述指令用于使所述计算设备执行根据本发明实施方式的方法。本实施例的可读介质包括永久性和非永久性、可移动和非可移动介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非暂态可读存储介质。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与本发明的示例一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的优选实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施方式可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施方式的描述中,本发明的各个特征有时被一起分组到单个实施方式、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。本领域技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施方式中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域技术人员可以理解,可以对实施方式中的设备中的模块进行自适应性地改变并且把它们设置在与该实施方式不同的一个或多个设备中。可以把实施方式中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施方式包括其它实施方式中所包括的某些特征而不是其它特征,但是不同实施方式的特征的组合意味着处于本发明的范围之内并且形成不同的实施方式。此外,所述实施方式中的一些在此被描述成可以由计算机***的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施方式的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施方式描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施方式。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。
Claims (10)
1.一种数据恢复方法,由加载到应用程序中的共享库执行,所述数据恢复方法包括:
拦截***发出的和应用程序崩溃有关的信号;
运行与所述信号有关的信号处理函数,所述信号处理函数提前注册在共享库中,且用于执行:
建立所述应用程序的子进程;
将所述子进程挂载到所述应用程序;
通过所述子进程弹出搜索框;
通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示在结果列表中;
接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
2.如权利要求1所述的数据恢复方法,还包括:
在保存用户复制的数据之后,重新抛出和应用程序崩溃有关的信号,以使所述应用程序退出。
3.如权利要求1所述的数据恢复方法,其中,根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据并展示的步骤包括:
读取预定大小的内存映射文件中的数据;
判断所述预定大小的内存映射文件中的数据与用户输入是否匹配;
如果匹配,将所述预定大小的内存映射文件中的数据加入结果列表中;如果不匹配,直接执行下一步;
判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
4.如权利要求1-3中任一项所述的数据恢复方法,还包括:
接收用户对结果列表中特定结果的选择输入,展示与所述特定结果对应的十六进制数据列表和字符列表,其中,
接收用户对结果列表的选择、复制操作包括:接收用户对所述字符列表的选择、复制操作。
5.一种数据恢复装置,设于加载到应用程序的共享库中,包括:
拦截模块,用于拦截***发出的和应用程序崩溃有关的信号,
运行模块,用于运行与所述信号有关的信号处理函数,所述信号处理函数提前注册在所述共享库中,且用于启动数据恢复装置内的以下模块:
建立模块,用于建立所述应用程序的子进程;
挂载模块,用于将所述子进程挂载到所述应用程序;
弹出模块,用于通过所述子进程弹出搜索框;
遍历模块,用于通过所述子进程接收用户输入,并根据用户输入遍历读取所述应用程序的内存映射文件中的数据,寻找与用户输入匹配的数据;
展示模块,用于将与用户输入匹配的数据展示在结果列表中;
保存模块,用于接收用户对结果列表的选择、复制操作,并保存用户复制的数据。
6.如权利要求5所述的数据恢复装置,还包括抛出模块,用于在保存用户复制的数据之后,重新抛出和应用程序崩溃有关的信号,以使所述应用程序退出。
7.如权利要求5所述的数据恢复装置,其中,所述遍历模块包括:
读取模块,用于读取预定大小的内存映射文件中的数据;
第一判断模块,用于判断所述预定大小的内存映射文件中的数据与用户输入是否匹配,如果匹配,触发加入模块;如果不匹配,触发第二判断模块;
加入模块,用于将所述预定大小的内存映射文件中的数据加入结果列表中;
第二判断模块,用于判断是否已读完内存映射文件中的所有数据,如果没有读完,继续读下一个预定大小的内存映射文件中的数据。
8.如权利要求5-7中任一项所述的数据恢复装置,其中,所述展示模块还用于接收用户对结果列表中特定结果的选择输入,展示与所述特定结果对应的十六进制数据列表和字符列表,
所述保存模块用于接收用户对所述字符列表的选择、复制操作,并保存用户复制的数据。
9.一种计算设备,包括:
至少一个处理器和存储有程序指令的存储器;
当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如权利要求1-4中任一项所述的数据恢复方法。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-4中任一项所述的数据恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210732971.XA CN114816862B (zh) | 2022-06-27 | 2022-06-27 | 数据恢复方法和装置、计算设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210732971.XA CN114816862B (zh) | 2022-06-27 | 2022-06-27 | 数据恢复方法和装置、计算设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114816862A true CN114816862A (zh) | 2022-07-29 |
CN114816862B CN114816862B (zh) | 2022-09-27 |
Family
ID=82523410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210732971.XA Active CN114816862B (zh) | 2022-06-27 | 2022-06-27 | 数据恢复方法和装置、计算设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816862B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150212896A1 (en) * | 2014-01-24 | 2015-07-30 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
CN105468478A (zh) * | 2015-11-26 | 2016-04-06 | 北京京东尚科信息技术有限公司 | 一种应用崩溃后的业务数据恢复方法及装置 |
CN112698984A (zh) * | 2020-12-17 | 2021-04-23 | 宁波三星医疗电气股份有限公司 | 嵌入式设备的数据库恢复方法、电子设备及介质 |
CN113127263A (zh) * | 2020-01-15 | 2021-07-16 | 中移(苏州)软件技术有限公司 | 一种内核崩溃恢复方法、装置、设备及存储介质 |
CN113515317A (zh) * | 2020-03-25 | 2021-10-19 | 华为技术有限公司 | 数据恢复的方法、装置 |
CN113849339A (zh) * | 2020-06-28 | 2021-12-28 | 华为技术有限公司 | 恢复应用程序的运行状态的方法、装置及存储介质 |
-
2022
- 2022-06-27 CN CN202210732971.XA patent/CN114816862B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150212896A1 (en) * | 2014-01-24 | 2015-07-30 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
CN105468478A (zh) * | 2015-11-26 | 2016-04-06 | 北京京东尚科信息技术有限公司 | 一种应用崩溃后的业务数据恢复方法及装置 |
CN113127263A (zh) * | 2020-01-15 | 2021-07-16 | 中移(苏州)软件技术有限公司 | 一种内核崩溃恢复方法、装置、设备及存储介质 |
CN113515317A (zh) * | 2020-03-25 | 2021-10-19 | 华为技术有限公司 | 数据恢复的方法、装置 |
CN113849339A (zh) * | 2020-06-28 | 2021-12-28 | 华为技术有限公司 | 恢复应用程序的运行状态的方法、装置及存储介质 |
CN112698984A (zh) * | 2020-12-17 | 2021-04-23 | 宁波三星医疗电气股份有限公司 | 嵌入式设备的数据库恢复方法、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114816862B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8126859B2 (en) | Updating a local version of a file based on a rule | |
US11003438B2 (en) | Method and device for incremental upgrade | |
EP3025255A1 (en) | Virtual synchronization with on-demand data delivery | |
CN105975311B (zh) | 一种应用启动方法及装置 | |
CN109710286B (zh) | ***升级方法、装置、设备和存储介质 | |
KR101615646B1 (ko) | 컴퓨터시스템, 그 제어방법과, 그 컴퓨터프로그램이 저장된 기록매체 | |
CN116048644B (zh) | 一种***迁移方法、装置和可读存储介质 | |
CN112667246A (zh) | 应用功能扩展的方法、装置及电子设备 | |
CN107423095B (zh) | 适配硬件的数据处理方法、装置、存储介质和计算机设备 | |
WO2018049883A1 (zh) | 文件操作方法及装置 | |
CN108920159B (zh) | 一种安全升级方法、装置及电子设备 | |
CN112230947A (zh) | 一种操作***的升级方法、升级*** | |
US7657716B2 (en) | Save and restore of a protected area | |
US20140157147A1 (en) | Feedback system, feedback method and recording media thereof | |
CN110941516B (zh) | 操作***还原方法、装置、设备及存储介质 | |
CN114816862B (zh) | 数据恢复方法和装置、计算设备和可读存储介质 | |
US20120144136A1 (en) | Restoration of data from a backup storage volume | |
CN115080114B (zh) | 应用程序的移植处理方法、装置和介质 | |
CN108009039B (zh) | 终端信息的记录方法、装置、存储介质及电子设备 | |
CN115421960A (zh) | 一种ue内存故障恢复方法、装置、电子设备及介质 | |
US20210248106A1 (en) | Systems and methods for updating select files in an image backup | |
CN114253752A (zh) | 一种应用程序崩溃处理方法、装置、设备及介质 | |
CN108509252B (zh) | 虚拟机启动装置、方法及主机 | |
CN108228299B (zh) | 显示方法及电子设备 | |
CN106897588B (zh) | 一种标签函数的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |