一种光盘数据修复方法、光盘数据检查方法及计算设备与流程

文档序号:29403393发布日期:2022-03-26 10:01阅读:193来源:国知局
1.本发明涉及光盘刻录
技术领域
:,特别涉及一种光盘数据修复方法、光盘数据检查方法、计算设备及可读存储介质。
背景技术
::2.目前,许多有保密要求的企业仍然在使用光盘作为数据存储的介质,iso9660及udf文件系统为通用的光盘格式,在当今的操作系统中均有良好的支持,因此凭借优良的兼容性,使用iso9660或者是udf文件系统的光盘,可以在几乎所有的计算机操作系统中被读取加载。而且,dvd+r/dvd-r/cd-r类型的光盘凭借其不可擦除的特性,在数据写入后就保持恒定,在数据备份领域有很好的使用场景。3.在光盘刻录时,当意外情况发生(例如刻录主机断电、外置光驱断电等)导致光盘刻录失败的时候,数据仅刻录了一部分,没有完整的文件系统,会导致光盘在系统中不可被识别,以致系统中不能正常挂载光盘,造成光盘数据不可读取,数据丢失,进而导致用户备份数据的目的无法完成。若要提取出光盘中的数据,需要复杂的技术手段才能实现,如果盘内数据比较敏感,交由第三方来修复光盘无疑造成了数据泄漏的安全风险,对于企业及个人而言存在重大风险;而对于拿到光盘的普通用户,由于光盘不能正常挂载,文件列表显示为空白,很容易让人误认为是空盘,进而往其中追加刻录,光盘仍完全无法识别。4.目前,对于不可擦除类型的光盘,市面上所使用光盘刻录软件基于brasero和k3b进行修改发布,功能均基于原有应用的基础功能,brasero和k3b分别基于xorriso/mkisofs&cdrecord开源库实现光盘刻录的流程,数据可以刻录到光盘,但如果发生刻录失败的情况,没有后续的数据恢复流程。5.基于此,需要一种光盘数据检查方法和针对不可擦除类型光盘刻录失败后的数据修复方法,以解决上述技术方案中存在的问题。技术实现要素:6.为此,本发明提供一种光盘数据修复方法,以力图解决或者至少缓解上面存在的问题。7.根据本发明的一个方面,提供了一种光盘数据修复方法,在计算设备中执行,该方法包括步骤:获取光盘最后一个会话中所写入的第一数据;获取最近一次刻录的完整数据包作为第二数据;从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据;将第一数据与第三数据进行比对;若比对结果一致,则将第一数据的结束位置作为修复起始位置;将第二数据中从修复起始位置开始的数据写入到光盘中。8.可选地,在根据本发明的光盘数据修复方法中,将第一数据与第三数据进行比对的步骤,包括:将第一数据拆分为第一预定大小的至少一个第一数据块,并获取每个第一数据块对应的第一特征码;按照第一预定大小将第三数据拆分为至少一个第二数据块,并获取每个第二数据块对应的第二特征码;将第一特征码与第二特征码进行比对。9.可选地,在根据本发明的光盘数据修复方法中,将第一特征码与第二特征码进行比对的步骤,包括:将每个第一数据块对应的第一特征码和与该第一数据块所在位置相同的第二数据块对应的第二特征码进行比对。10.可选地,在根据本发明的光盘数据修复方法中,在将第一特征码与第二特征码进行比对的步骤之后,还包括:若比对结果不一致,则对光盘不进行数据修复处理。11.可选地,在根据本发明的光盘数据修复方法中,在将第二数据中从修复起始位置开始的数据写入到光盘中的步骤之后,还包括:将第二数据写入到光盘所对应的会话进行封闭。12.根据本发明的另一个方面,提供了一种光盘数据检查方法,在计算设备中执行,该方法包括步骤:获取最后一个会话结构的位置信息,位置信息包括会话结构的起始地址、下一个可写地址;判断会话结构的起始地址与下一个可写地址是否相同,如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整;执行上述光盘数据修复方法。13.可选地,在根据本发明的光盘数据检查方法中,将第二数据中从修复起始位置开始的数据写入到光盘中的步骤,包括:从修复起始位置开始,每次读取第二数据中第二预定大小的数据到缓存中;通过系统调用,将缓存中的数据传入第一光驱指令;通过第一光驱指令,从光盘的下一个可写地址开始,将缓存中的数据写入到光盘中。14.可选地,在根据本发明的光盘数据检查方法中,其中,第一预定大小为4096字节,第二预定大小为32个数据块,数据块的大小为2048字节。15.根据本发明的另一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。16.根据本发明的还有一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的方法。17.通过本发明提供的一种光盘数据修复方法,一旦光盘刻录失败,用户可以立即在本机中,以刻录前的完整数据包,将光盘内容补充完整,达到光盘可以被系统挂载识别的目的。不仅能在短时间内解决光盘内容不可读取的问题,提升了光盘数据修复的效率,避免了用户认为数据丢失、光盘不可用而造成数据丢失,而且,还杜绝了在第三方提取修复光盘内数据时,可能造成的数据泄漏的风险,提升了数据安全性,也保障了数据完整性。18.并且,本发明通过使用原先刻录使用的完整数据包,校验光盘上不完整数据与完整包数据的一致性,对损坏的光盘进行数据补全,保护数据完整性,提高了数据修复的成功率,通过增加校验,避免了盲目修复可能导致光盘数据污染的风险。19.另外,根据本发明提供的一种光盘数据检查方法,通过获取光盘最后一个会话结构的位置信息,可以确定最后一个会话结构是否完整,便可得知光盘是否需要进行数据的修复。附图说明20.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。21.图1示出了根据本发明一个实施例的计算设备100的示意图;22.图2示出了根据本发明一个实施例的光盘中的数据存储结构示意图;以及23.图3示出了根据本发明一个实施例的光盘数据修复方法300的流程图。具体实施方式24.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。25.针对现有技术中存在的问题,本发明提供了一种光盘数据修复方法,解决在光盘刻录过程中,因非正常因素导致光盘刻录过程中止,造成的光盘文件系统不完整,从而使得用户计算机不可读取光盘内文件,认为数据丢失、光盘损坏,本发明的技术方案对这类刻录过程意外中止后的光盘文件系统进行修复,从而使操作系统可以正常挂载和读取光盘,并且后续的追加刻录等操作均不受影响。本发明还提供了一种光盘数据检查方法,用于检查光盘数据的刻录是否完整,光盘数据修复方法和光盘数据检查方法适于在计算设备中执行,图1示出了根据本发明一个实施例的计算设备100的结构示意图。图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的光盘数据修复方法和光盘数据检查方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的光盘数据修复方法和光盘数据检查方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。26.如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。27.取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(up)、微控制器(uc)、数字信息处理器(dsp)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。28.取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。29.计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138。30.计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。31.计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个a/v端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个i/o端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。32.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。33.计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和web服务器等。本发明的实施例对此均不做限制。34.在根据本发明的实施例中,计算设备100被配置为执行根据本发明的光盘数据修复方法300或光盘数据检查方法。其中,计算设备100的操作系统中包含用于执行本发明的光盘数据修复方法300或光盘数据检查方法的多条程序指令,使得本发明的光盘数据修复方法300或光盘数据检查方法可以在计算设备100的操作系统中执行。35.在介绍本发明实施例的光盘数据修复方法之前,首先对光盘中的数据存储结果进行说明。36.图2示出了根据本发明一个实施例的光盘中的数据存储结构示意图。37.对于dvd等类型的光盘,每一次的刻录在光盘中是以一次会话(session)的方式存在,session中保存着光盘的目录信息、文件信息,以及包含“指针”指向之前刻录的文件的信息,通过将其以例如udf或iso9660的文件系统组织起来,达到可以在操作系统中被挂载识别的目的。每一个session中都应具备一个完整的文件系统数据结构,包含文件系统的关键描述字符、文件系统的目录以及用于解析文件系统的关键指针入口,通过关键指针入口可以将文件系统中的所有数据逐次解析出来。所有的数据以数据块的方式存储(如图2所示的小方格),在dvd光盘中,每个块的大小为2048字节。38.如图2所示,光盘中的多个会话结构之间具有前后引用关系。具体而言,如果在当前的会话结构之前已构建了一个或多个会话结构,则在当前的会话结构之前构建的一个或多个会话结构是相对于当前会话结构的前置会话结构。并且,当前的会话结构中包含相应的一个或多个前置会话结构中的文件信息,前置会话结构的文件信息例如包括前置会话结构中的文件的地址、文件名称等信息。39.例如,在图2示出的数据存储结构示意图中,session1是session2的前置会话结构,session2中包含session1中的文件信息,例如文件名称为“统信”、“uos”、“操作系统”等相关文件的信息,并且还包含session2中的“梦想”等文件信息。session1和session2均是session3的前置会话结构,session3中包含session1和session2中的文件信息,例如文件名称为“统信”、“uos”、“操作系统”、“梦想”等相关文件的信息,并且还包含session3中的“界面”、“操作”、“功能”等文件信息。40.也就是说,每次新构建会话结构时,是引用相对于该会话结构的一个或多个前置会话结构的文件信息来构建,使得每次构建得到的新的会话结构中包含相应的一个或多个前置会话结构的文件信息,这样,光盘中的多个会话结构之间便形成了前后引用关系。41.基于会话结构之间的前后引用关系,每次在构建会话结构时,需确保一个或多个前置会话结构的完整性,换言之,在基于前置会话结构刻录文件未中断、前置会话结构完整的基础上,才能基于前置会话结构来构建新的会话结构。可以理解,光盘上存在的每个会话结构对应的前置会话结构是完整的。也就是说,如果一个光盘刻录成功,则光盘中的每个会话结构都是完整的,而如果一个光盘刻录失败,则光盘中最后一个会话的前置会话结构是完整的,但最后一个会话结构是不完整的。也可以理解,光盘上存在的所有会话结构中,只有最后一个会话结构的完整性不能确定,在最后一个会话结构之前的任意一个会话结构均是完整的会话结构。由此可知,只需检查最后一个会话结构是否完整即可确定光盘中是否存在不完整的会话结构。42.如果一个光盘刻录成功,则光盘可以被正常挂载;而如果一个光盘刻录不成功,则光盘中的最后一个会话不完整,则会导致该光盘挂载失败。对于正常可以正常挂载的光盘,光盘中可能有一个或多个会话,其中光盘中的每个会话都是完整的。而光盘会话结构的起始地址(startat)和下一个可写地址(nextwritableat)两个字段的值应当相等,其中,nextwritableat字段指明了可以从这个地址开始写入新的数据。而对于不能正常挂载的光盘,其最后一个会话是不完整的,起始地址和下一个可写地址产生了差异,下一个可写地址相对起始地址字段就产生了偏移,而偏移的量为最后一个会话已写入的数据的长度。43.因此,通过起始地址字段可以获取最后一次不完整会话开始偏移的地址,并且通过将下一个可写地址的值减去起始地址的值可以得知不完整会话已写入的数据长度(incomplete_len),即incomplete_len=nextwritableat-startat。44.根据本发明的一个实施例,提供了一种光盘数据检查方法,该方法基于光盘中的数据存储结构,检查光盘中是否存在不完整的会话结构的方法,具体包括:获取最后一个会话结构的位置信息,位置信息包括会话结构的起始地址、下一个可写地址。判断会话结构的起始地址与下一个可写地址是否相同,如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整。45.根据本发明的一个实施例,通过系统事件监视可以获取光驱的设备描述符(/dev/sr[0-9]),通过函数read_disc_information(光驱指令为0x51)可以读取到光盘状态,以及光盘内会话(session)的数量。在一种实现方式中,以光驱设备描述符/dev/sr0为例,通过系统调用ioctl传入光驱指令0x51和open(/dev/sr0)。其中,session即会话,是数据在光盘中刻录后的结构名称。只需检查最后一个会话结构是否完整即可确定光盘中是否存在不完整的会话结构。然后,获取最后一个会话的索引值(last_session)。以last_session作为参数,通过光驱指令0x52获取最后一个session的具体信息,可获取到的具体信息包括会话结构的起始地址和下一个可写地址。在一种实现方式中,以光驱设备描述符/dev/sr0为例,通过系统调用ioctl传入光驱指令0x52、open(/dev/sr0)和last_session。接着,通过判断会话结构的起始地址与下一个可写地址是否相同,可以得知会话结构是否完整。如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整。如果会话结构的起始地址与下一个可写地址相同,则可以确定最后一个会话结构是完整的。[0046]如果光盘最后一个会话结构是不完整的,光盘将挂载失败,则可以对光盘执行根据本发明的光盘数据修复方法300,对光盘中的数据进行修复。[0047]图3示出了根据本发明一个实施例的光盘数据修复方法300的流程图。光盘数据修复方法300可以在计算设备(例如前述计算设备100)的操作系统中执行。[0048]根据本发明的一个实施例,计算设备的操作系统可以为linux操作系统,例如,uos系统(uos系统是基于linux内核的一种操作系统)。下文仅以uos操作系统为例来对本发明的光盘数据修复方法300进行详细描述,但本发明的方法300并不限于在uos操作系统中执行,本发明的光盘数据修复方法不受限于执行该方法的操作系统的具体种类,本领域技术人员都能理解该方法同样能在其他种类的操作系统,例如windows操作系统上实现,而不需要付出创造性的劳动。任何能通过本发明的方法来实现光盘数据修复方法的操作系统的种类均在本发明的保护范围之内。[0049]如图3所示,方法300始于步骤s310。在步骤s310中,获取光盘最后一个会话中所写入的第一数据。其中,当光盘挂载失败,最后一个会话为不完整的会话,第一数据为该不完整的会话对应的已写入光盘的数据。[0050]根据本发明的一个实施例,从光盘的起始地址(startat字段)开始,通过read函数读取长度为incomplete_len的数据(该数据即第一数据)到内存中,保存在不完整会话的数组中,为方便后续描述,将其称为incomplete_session数组。[0051]随后,在步骤s320中,获取最近一次刻录的完整数据包作为第二数据。[0052]在刻录光盘时,使用光盘刻录工具将待刻录到光盘中的数据打包成完整数据包刻录到光盘中,完整数据包通常存储于计算设备中,若刻录失败,例如在刻录中发生了断电或其他情况导致数据写入不完整,仅写入了完整数据包的一部分(即第一数据),则可以通过本发明的光盘数据修复方法进行修复。完整数据包表示最近一次刻录所使用的完整数据包。[0053]可选地,根据本发明的一个实施例,将待刻录到光盘中的数据打包成完整数据包可以通过以下方式实现。以统信uos操作系统为例,通过libgenudfimage库中函数,以udf文件系统将需要刻录的文件组织到一个数据包中,该数据包可以通过udf的相关信息校验,是一个可以被刻录到光盘中的完整数据包,其中,包含udf文件系统信息、文件目录结构、文件数据体等信息。另外,还可以以iso9660文件系统将需要刻录的文件打包为一个完整数据包。[0054]根据本发明的一个实施例,在统信uos操作系统上,数据打包的完整数据包会存储在系统中指定目录下,因此从系统指定位置中查找最近一次刻录的完整数据包可以得到计算设备上存储的完整数据包,关于指定位置具体在计算设备中的位置,可由本领域技术人员根据需要进行设置,本发明对此不做限制。[0055]随后,在步骤s330中,从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据。[0056]随后,在步骤s340中,将第一数据与第三数据进行比对。[0057]根据本发明的一个实施例,直接将第一数据与第三数据进行比对。[0058]根据本发明的另一个实施例,将第一数据拆分为第一预定大小的至少一个第一数据块,并获取每个第一数据块对应的第一特征码。然后按照第一预定大小将第三数据拆分为至少一个第二数据块,并获取每个第二数据块对应的第二特征码。最后,将第一特征码与第二特征码进行比对。其中,第一预定大小可以为4096字节。[0059]在一种实现方式中,将incomplete_session数组的内存块(即第一数据)进行数据划分,实现以4096字节为最小单位进行顺序分组,每个分组表示拆分为大小为4096字节的第一数据块。然后,对每个分组(即第一数据块)进行特征码校验,得到第一特征码。可选地,第一特征码可以是通过md5(messagedigestalgorithm5,信息摘要算法5)算法对每个第一数据块计算得到对应的md5值,可以通过函数calc_md5(char*bytes)获取每个第一数据块对应的校验结果作为第一特征码。然后,将所有第一特征码存储到数组中,为方便后续说明,将该数组称为incomplete_md5。[0060]根据本发明的一个实施例,从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据。然后,按照第一预定大小将第三数据拆分为至少一个第二数据块。根据一种实现方式,通过read函数,从第二数据起始位置读取长度为第一数据的长度的数据存储在complete_package变量中,对complete_package变量所指向的内容,按照每个数据块4096字节的长度,将该变量所指向的内容拆分为至少一个数据块。[0061]根据本发明的一个实施例,采用与获取每个第一数据块对应的第一特征码相同的方法,获取每个第二数据块对应的第二特征码。可选地,第二特征码可以是通过md5(messagedigestalgorithm5,信息摘要算法5)算法对每个第二数据块计算得到对应的md5值,可以通过函数calc_md5(char*bytes)获取每个第二数据块对应的校验结果作为第二特征码。然后,将所有第二特征码存储到数组中,为方便后续说明,将该数组称为complete_md5。[0062]然后,将第一特征码与第二特征码进行比对。具体地,将每个第一数据块对应的第一特征码和与该第一数据块所在位置相同的第二数据块对应的第二特征码进行比对。可选地,根据本发明的一个实施例,将第一数据拆分后的第一个第一数据块对应的第一特征码与第二数据拆分后的第一个第二数据块对应的第二特征码进行比对,将第一数据拆分后的第二个第一数据块对应的第一特征码与第二数据拆分后的第二个第二数据块对应的第二特征码进行比对,将第一数据拆分后的第n个第一数据块对应的第一特征码与第二数据拆分后的第n个第二数据块对应的第二特征码进行比对,所述位置表示第一数据块在第一数据当中位列第几个。[0063]可选地,根据本发明另一个实施例,逐次比对incomplete_md5数组与complete_md5数组中对应位置元素的值。[0064]在这一步骤中,通过比对第一特征码与第二特征码,保证用于修复光盘的数据与这张光盘中已刻录的数据是一致的。因此,当比对结果不一致时,说明原先刻录用的数据包(原先刻录第一数据时所使用的数据包)与当前用于修复光盘的数据包(第二数据)不一致,此时应结束修复流程,防止刻录了错误的数据导致光盘不可读取。[0065]根据本发明的实施例,若比对结果不一致,则对光盘不进行数据修复处理。[0066]随后,在步骤s350中,若比对结果一致,则将第一数据的结束位置作为修复起始位置。[0067]比对结果一致说明原先刻录用的数据包(原先刻录第一数据时所使用的数据包)与当前用于修复光盘的数据包(第二数据)是一致的,则可以使用第二数据对光盘进行修复。比对成功后,则进入寻址的操作。其中,第一数据的长度incomplete_len即已刻录到光盘中的数据的长度。根据本发明的一个实施例,读取第二数据,以incomplete_len作为数据的修复起始位置。[0068]随后,在步骤s360中,将第二数据中从修复起始位置开始的数据写入到所述光盘中。[0069]根据本发明的一个实施例,从修复起始位置开始,每次读取第二数据中第二预定大小的数据到缓存中,然后通过系统调用,将缓存中的数据传入第一光驱指令,再通过所述第一光驱指令,从光盘的下一个可写地址开始,将缓存中的数据写入到所述光盘中。其中,第二预定大小为32个数据块,每个数据块的大小为2048字节。[0070]具体地,从修复起始位置,开始往后顺序读取第二数据,单次读取的数据大小为32个数据块(32*2048字节),并读取到缓存(buffer)中。将buffer字段中的内容通过系统调用,传入光驱指令0x2a,从下一个可写地址(nextwritableat)开始往光盘中写入后续的补全数据,直到第二数据完整地刻录完成。[0071]在将第二数据中从修复起始位置开始的数据写入到光盘中之后,将第二数据写入到光盘所对应的会话(也是光盘中的最后一个会话)进行封闭,以便结束光盘刻录。[0072]根据本发明的光盘数据修复方法,通过比对光盘刻录的非完整数据(第一数据)和完整数据包(第二数据)之间的差异,将差异数据,即光盘中原本要刻录但未刻录成功的数据顺序续写到光盘中,以达到补全光盘文件系统的目的。完整数据包与非完整数据不一致的时候不对光盘进行操作,避免对光盘造成数据污染,保障了光盘修复的成功率。[0073]在传统的光盘刻录过程中,当光盘在刻录中失败后,光盘便无法再使用了,要想恢复其中的数据只能通过技术手段将其中的数据提取出来,再存储到其他的光盘中,数据提取修复需要大量时间,且需要较高的专业知识储备,而数据修复的过程,还存在着数据泄漏的风险。[0074]而通过本发明提供的一种光盘数据修复方法,一旦光盘刻录失败,用户可以立即在本机中,以刻录前的完整数据包,将光盘内容补充完整,达到光盘可以被系统挂载识别的目的。不仅能在短时间内解决光盘内容不可读取的问题,提升了光盘数据修复的效率,避免了用户认为数据丢失、光盘不可用而造成数据丢失,而且,还杜绝了在第三方提取修复光盘内数据时,可能造成的数据泄漏的风险,提升了数据安全性,也保障了数据完整性。[0075]并且,本发明通过使用原先刻录使用的完整数据包,校验光盘上不完整数据与完整包数据的一致性,对损坏的光盘进行数据补全,保护数据完整性,提高了数据修复的成功率,通过增加校验,避免了盲目修复可能导致光盘数据污染的风险。[0076]另外,根据本发明提供的一种光盘数据检查方法,通过获取光盘最后一个会话结构的位置信息,可以确定最后一个会话结构是否完整,便可得知光盘是否需要进行数据的修复。[0077]这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。[0078]在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的光盘数据修复方法和光盘数据检查方法。[0079]以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。[0080]在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。[0081]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。[0082]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。[0083]本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。[0084]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。[0085]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。[0086]此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。[0087]如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。[0088]尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本
技术领域
:内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1