CN114242119A - 一种光盘数据修复方法、光盘数据检查方法及计算设备 - Google Patents

一种光盘数据修复方法、光盘数据检查方法及计算设备 Download PDF

Info

Publication number
CN114242119A
CN114242119A CN202111554192.7A CN202111554192A CN114242119A CN 114242119 A CN114242119 A CN 114242119A CN 202111554192 A CN202111554192 A CN 202111554192A CN 114242119 A CN114242119 A CN 114242119A
Authority
CN
China
Prior art keywords
data
optical disc
session
computing device
repair
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
Application number
CN202111554192.7A
Other languages
English (en)
Other versions
CN114242119B (zh
Inventor
徐诗筒
张升
吕伍军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202111554192.7A priority Critical patent/CN114242119B/zh
Publication of CN114242119A publication Critical patent/CN114242119A/zh
Application granted granted Critical
Publication of CN114242119B publication Critical patent/CN114242119B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B7/00Recording or reproducing by optical means, e.g. recording using a thermal beam of optical radiation by modifying optical properties or the physical structure, reproducing using an optical beam at lower power by sensing optical properties; Record carriers therefor
    • G11B7/004Recording, reproducing or erasing methods; Read, write or erase circuits therefor
    • G11B7/0045Recording
    • G11B7/00458Verification, i.e. checking data during or after recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1816Testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B7/00Recording or reproducing by optical means, e.g. recording using a thermal beam of optical radiation by modifying optical properties or the physical structure, reproducing using an optical beam at lower power by sensing optical properties; Record carriers therefor
    • G11B7/002Recording, reproducing or erasing systems characterised by the shape or form of the carrier
    • G11B7/0037Recording, reproducing or erasing systems characterised by the shape or form of the carrier with discs

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Optical Recording Or Reproduction (AREA)

Abstract

本发明公开了一种光盘数据修复方法、光盘数据检查方法及计算设备。光盘数据修复方法包括步骤:获取光盘最后一个会话中所写入的第一数据;获取最近一次刻录的完整数据包作为第二数据;从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据;将第一数据与第三数据进行比对;若比对结果一致,则将第一数据的结束位置作为修复起始位置;将第二数据中从修复起始位置开始的数据写入到光盘中。本发明的技术方案保障了光盘数据的完整性。

Description

一种光盘数据修复方法、光盘数据检查方法及计算设备
技术领域
本发明涉及光盘刻录技术领域,特别涉及一种光盘数据修复方法、光盘数据检查方法、计算设备及可读存储介质。
背景技术
目前,许多有保密要求的企业仍然在使用光盘作为数据存储的介质,ISO9660及UDF文件系统为通用的光盘格式,在当今的操作系统中均有良好的支持,因此凭借优良的兼容性,使用ISO9660或者是UDF文件系统的光盘,可以在几乎所有的计算机操作系统中被读取加载。而且,DVD+R/DVD-R/CD-R类型的光盘凭借其不可擦除的特性,在数据写入后就保持恒定,在数据备份领域有很好的使用场景。
在光盘刻录时,当意外情况发生(例如刻录主机断电、外置光驱断电等)导致光盘刻录失败的时候,数据仅刻录了一部分,没有完整的文件系统,会导致光盘在系统中不可被识别,以致系统中不能正常挂载光盘,造成光盘数据不可读取,数据丢失,进而导致用户备份数据的目的无法完成。若要提取出光盘中的数据,需要复杂的技术手段才能实现,如果盘内数据比较敏感,交由第三方来修复光盘无疑造成了数据泄漏的安全风险,对于企业及个人而言存在重大风险;而对于拿到光盘的普通用户,由于光盘不能正常挂载,文件列表显示为空白,很容易让人误认为是空盘,进而往其中追加刻录,光盘仍完全无法识别。
目前,对于不可擦除类型的光盘,市面上所使用光盘刻录软件基于Brasero和K3B进行修改发布,功能均基于原有应用的基础功能,Brasero和K3B分别基于xorriso/mkisofs&cdrecord开源库实现光盘刻录的流程,数据可以刻录到光盘,但如果发生刻录失败的情况,没有后续的数据恢复流程。
基于此,需要一种光盘数据检查方法和针对不可擦除类型光盘刻录失败后的数据修复方法,以解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种光盘数据修复方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种光盘数据修复方法,在计算设备中执行,该方法包括步骤:获取光盘最后一个会话中所写入的第一数据;获取最近一次刻录的完整数据包作为第二数据;从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据;将第一数据与第三数据进行比对;若比对结果一致,则将第一数据的结束位置作为修复起始位置;将第二数据中从修复起始位置开始的数据写入到光盘中。
可选地,在根据本发明的光盘数据修复方法中,将第一数据与第三数据进行比对的步骤,包括:将第一数据拆分为第一预定大小的至少一个第一数据块,并获取每个第一数据块对应的第一特征码;按照第一预定大小将第三数据拆分为至少一个第二数据块,并获取每个第二数据块对应的第二特征码;将第一特征码与第二特征码进行比对。
可选地,在根据本发明的光盘数据修复方法中,将第一特征码与第二特征码进行比对的步骤,包括:将每个第一数据块对应的第一特征码和与该第一数据块所在位置相同的第二数据块对应的第二特征码进行比对。
可选地,在根据本发明的光盘数据修复方法中,在将第一特征码与第二特征码进行比对的步骤之后,还包括:若比对结果不一致,则对光盘不进行数据修复处理。
可选地,在根据本发明的光盘数据修复方法中,在将第二数据中从修复起始位置开始的数据写入到光盘中的步骤之后,还包括:将第二数据写入到光盘所对应的会话进行封闭。
根据本发明的另一个方面,提供了一种光盘数据检查方法,在计算设备中执行,该方法包括步骤:获取最后一个会话结构的位置信息,位置信息包括会话结构的起始地址、下一个可写地址;判断会话结构的起始地址与下一个可写地址是否相同,如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整;执行上述光盘数据修复方法。
可选地,在根据本发明的光盘数据检查方法中,将第二数据中从修复起始位置开始的数据写入到光盘中的步骤,包括:从修复起始位置开始,每次读取第二数据中第二预定大小的数据到缓存中;通过系统调用,将缓存中的数据传入第一光驱指令;通过第一光驱指令,从光盘的下一个可写地址开始,将缓存中的数据写入到光盘中。
可选地,在根据本发明的光盘数据检查方法中,其中,第一预定大小为4096字节,第二预定大小为32个数据块,数据块的大小为2048字节。
根据本发明的另一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。
根据本发明的还有一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的方法。
通过本发明提供的一种光盘数据修复方法,一旦光盘刻录失败,用户可以立即在本机中,以刻录前的完整数据包,将光盘内容补充完整,达到光盘可以被系统挂载识别的目的。不仅能在短时间内解决光盘内容不可读取的问题,提升了光盘数据修复的效率,避免了用户认为数据丢失、光盘不可用而造成数据丢失,而且,还杜绝了在第三方提取修复光盘内数据时,可能造成的数据泄漏的风险,提升了数据安全性,也保障了数据完整性。
并且,本发明通过使用原先刻录使用的完整数据包,校验光盘上不完整数据与完整包数据的一致性,对损坏的光盘进行数据补全,保护数据完整性,提高了数据修复的成功率,通过增加校验,避免了盲目修复可能导致光盘数据污染的风险。
另外,根据本发明提供的一种光盘数据检查方法,通过获取光盘最后一个会话结构的位置信息,可以确定最后一个会话结构是否完整,便可得知光盘是否需要进行数据的修复。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的光盘中的数据存储结构示意图;以及
图3示出了根据本发明一个实施例的光盘数据修复方法300的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中存在的问题,本发明提供了一种光盘数据修复方法,解决在光盘刻录过程中,因非正常因素导致光盘刻录过程中止,造成的光盘文件系统不完整,从而使得用户计算机不可读取光盘内文件,认为数据丢失、光盘损坏,本发明的技术方案对这类刻录过程意外中止后的光盘文件系统进行修复,从而使操作系统可以正常挂载和读取光盘,并且后续的追加刻录等操作均不受影响。本发明还提供了一种光盘数据检查方法,用于检查光盘数据的刻录是否完整,光盘数据修复方法和光盘数据检查方法适于在计算设备中执行,图1示出了根据本发明一个实施例的计算设备100的结构示意图。图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的光盘数据修复方法和光盘数据检查方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的光盘数据修复方法和光盘数据检查方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138。
计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和WEB服务器等。本发明的实施例对此均不做限制。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的光盘数据修复方法300或光盘数据检查方法。其中,计算设备100的操作系统中包含用于执行本发明的光盘数据修复方法300或光盘数据检查方法的多条程序指令,使得本发明的光盘数据修复方法300或光盘数据检查方法可以在计算设备100的操作系统中执行。
在介绍本发明实施例的光盘数据修复方法之前,首先对光盘中的数据存储结果进行说明。
图2示出了根据本发明一个实施例的光盘中的数据存储结构示意图。
对于DVD等类型的光盘,每一次的刻录在光盘中是以一次会话(session)的方式存在,session中保存着光盘的目录信息、文件信息,以及包含“指针”指向之前刻录的文件的信息,通过将其以例如UDF或ISO9660的文件系统组织起来,达到可以在操作系统中被挂载识别的目的。每一个session中都应具备一个完整的文件系统数据结构,包含文件系统的关键描述字符、文件系统的目录以及用于解析文件系统的关键指针入口,通过关键指针入口可以将文件系统中的所有数据逐次解析出来。所有的数据以数据块的方式存储(如图2所示的小方格),在DVD光盘中,每个块的大小为2048字节。
如图2所示,光盘中的多个会话结构之间具有前后引用关系。具体而言,如果在当前的会话结构之前已构建了一个或多个会话结构,则在当前的会话结构之前构建的一个或多个会话结构是相对于当前会话结构的前置会话结构。并且,当前的会话结构中包含相应的一个或多个前置会话结构中的文件信息,前置会话结构的文件信息例如包括前置会话结构中的文件的地址、文件名称等信息。
例如,在图2示出的数据存储结构示意图中,session1是session2的前置会话结构,session2中包含session1中的文件信息,例如文件名称为“统信”、“UOS”、“操作系统”等相关文件的信息,并且还包含session2中的“梦想”等文件信息。session1和session2均是session3的前置会话结构,session3中包含session1和session2中的文件信息,例如文件名称为“统信”、“UOS”、“操作系统”、“梦想”等相关文件的信息,并且还包含session3中的“界面”、“操作”、“功能”等文件信息。
也就是说,每次新构建会话结构时,是引用相对于该会话结构的一个或多个前置会话结构的文件信息来构建,使得每次构建得到的新的会话结构中包含相应的一个或多个前置会话结构的文件信息,这样,光盘中的多个会话结构之间便形成了前后引用关系。
基于会话结构之间的前后引用关系,每次在构建会话结构时,需确保一个或多个前置会话结构的完整性,换言之,在基于前置会话结构刻录文件未中断、前置会话结构完整的基础上,才能基于前置会话结构来构建新的会话结构。可以理解,光盘上存在的每个会话结构对应的前置会话结构是完整的。也就是说,如果一个光盘刻录成功,则光盘中的每个会话结构都是完整的,而如果一个光盘刻录失败,则光盘中最后一个会话的前置会话结构是完整的,但最后一个会话结构是不完整的。也可以理解,光盘上存在的所有会话结构中,只有最后一个会话结构的完整性不能确定,在最后一个会话结构之前的任意一个会话结构均是完整的会话结构。由此可知,只需检查最后一个会话结构是否完整即可确定光盘中是否存在不完整的会话结构。
如果一个光盘刻录成功,则光盘可以被正常挂载;而如果一个光盘刻录不成功,则光盘中的最后一个会话不完整,则会导致该光盘挂载失败。对于正常可以正常挂载的光盘,光盘中可能有一个或多个会话,其中光盘中的每个会话都是完整的。而光盘会话结构的起始地址(start at)和下一个可写地址(next writable at)两个字段的值应当相等,其中,next writable at字段指明了可以从这个地址开始写入新的数据。而对于不能正常挂载的光盘,其最后一个会话是不完整的,起始地址和下一个可写地址产生了差异,下一个可写地址相对起始地址字段就产生了偏移,而偏移的量为最后一个会话已写入的数据的长度。
因此,通过起始地址字段可以获取最后一次不完整会话开始偏移的地址,并且通过将下一个可写地址的值减去起始地址的值可以得知不完整会话已写入的数据长度(incomplete_len),即incomplete_len=next writable at-start at。
根据本发明的一个实施例,提供了一种光盘数据检查方法,该方法基于光盘中的数据存储结构,检查光盘中是否存在不完整的会话结构的方法,具体包括:获取最后一个会话结构的位置信息,位置信息包括会话结构的起始地址、下一个可写地址。判断会话结构的起始地址与下一个可写地址是否相同,如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整。
根据本发明的一个实施例,通过系统事件监视可以获取光驱的设备描述符(/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。接着,通过判断会话结构的起始地址与下一个可写地址是否相同,可以得知会话结构是否完整。如果会话结构的起始地址与下一个可写地址不同,则确定最后一个会话结构不完整。如果会话结构的起始地址与下一个可写地址相同,则可以确定最后一个会话结构是完整的。
如果光盘最后一个会话结构是不完整的,光盘将挂载失败,则可以对光盘执行根据本发明的光盘数据修复方法300,对光盘中的数据进行修复。
图3示出了根据本发明一个实施例的光盘数据修复方法300的流程图。光盘数据修复方法300可以在计算设备(例如前述计算设备100)的操作系统中执行。
根据本发明的一个实施例,计算设备的操作系统可以为Linux操作系统,例如,UOS系统(UOS系统是基于Linux内核的一种操作系统)。下文仅以UOS操作系统为例来对本发明的光盘数据修复方法300进行详细描述,但本发明的方法300并不限于在UOS操作系统中执行,本发明的光盘数据修复方法不受限于执行该方法的操作系统的具体种类,本领域技术人员都能理解该方法同样能在其他种类的操作系统,例如windows操作系统上实现,而不需要付出创造性的劳动。任何能通过本发明的方法来实现光盘数据修复方法的操作系统的种类均在本发明的保护范围之内。
如图3所示,方法300始于步骤S310。在步骤S310中,获取光盘最后一个会话中所写入的第一数据。其中,当光盘挂载失败,最后一个会话为不完整的会话,第一数据为该不完整的会话对应的已写入光盘的数据。
根据本发明的一个实施例,从光盘的起始地址(start at字段)开始,通过read函数读取长度为incomplete_len的数据(该数据即第一数据)到内存中,保存在不完整会话的数组中,为方便后续描述,将其称为incomplete_session数组。
随后,在步骤S320中,获取最近一次刻录的完整数据包作为第二数据。
在刻录光盘时,使用光盘刻录工具将待刻录到光盘中的数据打包成完整数据包刻录到光盘中,完整数据包通常存储于计算设备中,若刻录失败,例如在刻录中发生了断电或其他情况导致数据写入不完整,仅写入了完整数据包的一部分(即第一数据),则可以通过本发明的光盘数据修复方法进行修复。完整数据包表示最近一次刻录所使用的完整数据包。
可选地,根据本发明的一个实施例,将待刻录到光盘中的数据打包成完整数据包可以通过以下方式实现。以统信UOS操作系统为例,通过libgenudfimage库中函数,以UDF文件系统将需要刻录的文件组织到一个数据包中,该数据包可以通过UDF的相关信息校验,是一个可以被刻录到光盘中的完整数据包,其中,包含UDF文件系统信息、文件目录结构、文件数据体等信息。另外,还可以以ISO9660文件系统将需要刻录的文件打包为一个完整数据包。
根据本发明的一个实施例,在统信UOS操作系统上,数据打包的完整数据包会存储在系统中指定目录下,因此从系统指定位置中查找最近一次刻录的完整数据包可以得到计算设备上存储的完整数据包,关于指定位置具体在计算设备中的位置,可由本领域技术人员根据需要进行设置,本发明对此不做限制。
随后,在步骤S330中,从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据。
随后,在步骤S340中,将第一数据与第三数据进行比对。
根据本发明的一个实施例,直接将第一数据与第三数据进行比对。
根据本发明的另一个实施例,将第一数据拆分为第一预定大小的至少一个第一数据块,并获取每个第一数据块对应的第一特征码。然后按照第一预定大小将第三数据拆分为至少一个第二数据块,并获取每个第二数据块对应的第二特征码。最后,将第一特征码与第二特征码进行比对。其中,第一预定大小可以为4096字节。
在一种实现方式中,将incomplete_session数组的内存块(即第一数据)进行数据划分,实现以4096字节为最小单位进行顺序分组,每个分组表示拆分为大小为4096字节的第一数据块。然后,对每个分组(即第一数据块)进行特征码校验,得到第一特征码。可选地,第一特征码可以是通过MD5(Message Digest Algorithm 5,信息摘要算法5)算法对每个第一数据块计算得到对应的MD5值,可以通过函数calc_md5(char*bytes)获取每个第一数据块对应的校验结果作为第一特征码。然后,将所有第一特征码存储到数组中,为方便后续说明,将该数组称为incomplete_md5。
根据本发明的一个实施例,从第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据。然后,按照第一预定大小将第三数据拆分为至少一个第二数据块。根据一种实现方式,通过read函数,从第二数据起始位置读取长度为第一数据的长度的数据存储在complete_package变量中,对complete_package变量所指向的内容,按照每个数据块4096字节的长度,将该变量所指向的内容拆分为至少一个数据块。
根据本发明的一个实施例,采用与获取每个第一数据块对应的第一特征码相同的方法,获取每个第二数据块对应的第二特征码。可选地,第二特征码可以是通过MD5(Message Digest Algorithm 5,信息摘要算法5)算法对每个第二数据块计算得到对应的MD5值,可以通过函数calc_md5(char*bytes)获取每个第二数据块对应的校验结果作为第二特征码。然后,将所有第二特征码存储到数组中,为方便后续说明,将该数组称为complete_md5。
然后,将第一特征码与第二特征码进行比对。具体地,将每个第一数据块对应的第一特征码和与该第一数据块所在位置相同的第二数据块对应的第二特征码进行比对。可选地,根据本发明的一个实施例,将第一数据拆分后的第一个第一数据块对应的第一特征码与第二数据拆分后的第一个第二数据块对应的第二特征码进行比对,将第一数据拆分后的第二个第一数据块对应的第一特征码与第二数据拆分后的第二个第二数据块对应的第二特征码进行比对,将第一数据拆分后的第n个第一数据块对应的第一特征码与第二数据拆分后的第n个第二数据块对应的第二特征码进行比对,所述位置表示第一数据块在第一数据当中位列第几个。
可选地,根据本发明另一个实施例,逐次比对incomplete_md5数组与complete_md5数组中对应位置元素的值。
在这一步骤中,通过比对第一特征码与第二特征码,保证用于修复光盘的数据与这张光盘中已刻录的数据是一致的。因此,当比对结果不一致时,说明原先刻录用的数据包(原先刻录第一数据时所使用的数据包)与当前用于修复光盘的数据包(第二数据)不一致,此时应结束修复流程,防止刻录了错误的数据导致光盘不可读取。
根据本发明的实施例,若比对结果不一致,则对光盘不进行数据修复处理。
随后,在步骤S350中,若比对结果一致,则将第一数据的结束位置作为修复起始位置。
比对结果一致说明原先刻录用的数据包(原先刻录第一数据时所使用的数据包)与当前用于修复光盘的数据包(第二数据)是一致的,则可以使用第二数据对光盘进行修复。比对成功后,则进入寻址的操作。其中,第一数据的长度incomplete_len即已刻录到光盘中的数据的长度。根据本发明的一个实施例,读取第二数据,以incomplete_len作为数据的修复起始位置。
随后,在步骤S360中,将第二数据中从修复起始位置开始的数据写入到所述光盘中。
根据本发明的一个实施例,从修复起始位置开始,每次读取第二数据中第二预定大小的数据到缓存中,然后通过系统调用,将缓存中的数据传入第一光驱指令,再通过所述第一光驱指令,从光盘的下一个可写地址开始,将缓存中的数据写入到所述光盘中。其中,第二预定大小为32个数据块,每个数据块的大小为2048字节。
具体地,从修复起始位置,开始往后顺序读取第二数据,单次读取的数据大小为32个数据块(32*2048字节),并读取到缓存(buffer)中。将buffer字段中的内容通过系统调用,传入光驱指令0x2a,从下一个可写地址(next writable at)开始往光盘中写入后续的补全数据,直到第二数据完整地刻录完成。
在将第二数据中从修复起始位置开始的数据写入到光盘中之后,将第二数据写入到光盘所对应的会话(也是光盘中的最后一个会话)进行封闭,以便结束光盘刻录。
根据本发明的光盘数据修复方法,通过比对光盘刻录的非完整数据(第一数据)和完整数据包(第二数据)之间的差异,将差异数据,即光盘中原本要刻录但未刻录成功的数据顺序续写到光盘中,以达到补全光盘文件系统的目的。完整数据包与非完整数据不一致的时候不对光盘进行操作,避免对光盘造成数据污染,保障了光盘修复的成功率。
在传统的光盘刻录过程中,当光盘在刻录中失败后,光盘便无法再使用了,要想恢复其中的数据只能通过技术手段将其中的数据提取出来,再存储到其他的光盘中,数据提取修复需要大量时间,且需要较高的专业知识储备,而数据修复的过程,还存在着数据泄漏的风险。
而通过本发明提供的一种光盘数据修复方法,一旦光盘刻录失败,用户可以立即在本机中,以刻录前的完整数据包,将光盘内容补充完整,达到光盘可以被系统挂载识别的目的。不仅能在短时间内解决光盘内容不可读取的问题,提升了光盘数据修复的效率,避免了用户认为数据丢失、光盘不可用而造成数据丢失,而且,还杜绝了在第三方提取修复光盘内数据时,可能造成的数据泄漏的风险,提升了数据安全性,也保障了数据完整性。
并且,本发明通过使用原先刻录使用的完整数据包,校验光盘上不完整数据与完整包数据的一致性,对损坏的光盘进行数据补全,保护数据完整性,提高了数据修复的成功率,通过增加校验,避免了盲目修复可能导致光盘数据污染的风险。
另外,根据本发明提供的一种光盘数据检查方法,通过获取光盘最后一个会话结构的位置信息,可以确定最后一个会话结构是否完整,便可得知光盘是否需要进行数据的修复。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的光盘数据修复方法和光盘数据检查方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种光盘数据修复方法,在计算设备中执行,所述方法包括步骤:
获取光盘最后一个会话中所写入的第一数据;
获取最近一次刻录的完整数据包作为第二数据;
从所述第二数据的起始位置开始,读取长度为第一数据长度的数据作为第三数据;
将第一数据与第三数据进行比对;
若比对结果一致,则将第一数据的结束位置作为修复起始位置;
将第二数据中从所述修复起始位置开始的数据写入到所述光盘中。
2.根据权利要求1所述的方法,所述将第一数据与第三数据进行比对的步骤,包括:
将所述第一数据拆分为第一预定大小的至少一个第一数据块,并获取每个第一数据块对应的第一特征码;
按照第一预定大小将所述第三数据拆分为至少一个第二数据块,并获取每个第二数据块对应的第二特征码;
将第一特征码与第二特征码进行比对。
3.根据权利要求2所述的方法,其中,所述将第一特征码与第二特征码进行比对的步骤,包括:
将每个第一数据块对应的第一特征码和与该第一数据块所在位置相同的第二数据块对应的第二特征码进行比对。
4.根据权利要求1至3中任一项所述的方法,其中,在所述将第一特征码与第二特征码进行比对的步骤之后,还包括:
若比对结果不一致,则对所述光盘不进行数据修复处理。
5.根据权利要求1至4中任一项所述的方法,在所述将第二数据中从所述修复起始位置开始的数据写入到所述光盘中的步骤之后,还包括:
将第二数据写入到光盘所对应的会话进行封闭。
6.一种光盘数据检查方法,在计算设备中执行,所述方法包括步骤:
获取最后一个会话结构的位置信息,所述位置信息包括所述会话结构的起始地址、下一个可写地址;
判断所述会话结构的起始地址与下一个可写地址是否相同,如果所述会话结构的起始地址与下一个可写地址不同,则确定所述最后一个会话结构不完整;
执行权利要求1至5中任一项所述的光盘数据修复方法。
7.根据权利要求6所述的方法,其中,所述将第二数据中从所述修复起始位置开始的数据写入到所述光盘中的步骤,包括:
从修复起始位置开始,每次读取第二数据中第二预定大小的数据到缓存中;
通过系统调用,将缓存中的数据传入第一光驱指令;
通过所述第一光驱指令,从光盘的下一个可写地址开始,将缓存中的数据写入到所述光盘中。
8.根据权利要求7所述的方法,其中,所述第一预定大小为4096字节,所述第二预定大小为32个数据块,所述数据块的大小为2048字节。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1至8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1至8中任一项所述方法。
CN202111554192.7A 2021-12-17 2021-12-17 一种光盘数据修复方法、光盘数据检查方法及计算设备 Active CN114242119B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111554192.7A CN114242119B (zh) 2021-12-17 2021-12-17 一种光盘数据修复方法、光盘数据检查方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111554192.7A CN114242119B (zh) 2021-12-17 2021-12-17 一种光盘数据修复方法、光盘数据检查方法及计算设备

Publications (2)

Publication Number Publication Date
CN114242119A true CN114242119A (zh) 2022-03-25
CN114242119B CN114242119B (zh) 2024-03-01

Family

ID=80758319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111554192.7A Active CN114242119B (zh) 2021-12-17 2021-12-17 一种光盘数据修复方法、光盘数据检查方法及计算设备

Country Status (1)

Country Link
CN (1) CN114242119B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004178788A (ja) * 2002-11-15 2004-06-24 Matsushita Electric Ind Co Ltd 記録装置および記録方法
CN101399067A (zh) * 2007-09-26 2009-04-01 凌阳科技股份有限公司 光盘写入错误的恢复方法
CN101909189A (zh) * 2010-07-22 2010-12-08 杭州海康威视数字技术股份有限公司 文件恢复方法、系统及dvr
CN103137159A (zh) * 2011-11-28 2013-06-05 杭州海康威视数字技术股份有限公司 数字硬盘录像机中录像直刻容错的方法及其装置
CN113553010A (zh) * 2021-07-27 2021-10-26 成都统信软件技术有限公司 一种光盘文件校验方法、光盘刻录方法及计算设备
CN113655960A (zh) * 2021-08-16 2021-11-16 成都统信软件技术有限公司 一种光盘可读性修复方法及计算设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004178788A (ja) * 2002-11-15 2004-06-24 Matsushita Electric Ind Co Ltd 記録装置および記録方法
CN101399067A (zh) * 2007-09-26 2009-04-01 凌阳科技股份有限公司 光盘写入错误的恢复方法
CN101909189A (zh) * 2010-07-22 2010-12-08 杭州海康威视数字技术股份有限公司 文件恢复方法、系统及dvr
CN103137159A (zh) * 2011-11-28 2013-06-05 杭州海康威视数字技术股份有限公司 数字硬盘录像机中录像直刻容错的方法及其装置
CN113553010A (zh) * 2021-07-27 2021-10-26 成都统信软件技术有限公司 一种光盘文件校验方法、光盘刻录方法及计算设备
CN113655960A (zh) * 2021-08-16 2021-11-16 成都统信软件技术有限公司 一种光盘可读性修复方法及计算设备

Also Published As

Publication number Publication date
CN114242119B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN101809566B (zh) 高效的文件散列标识符计算
CN1273891C (zh) 最小单位地更新多个文件的方法
KR100515890B1 (ko) 효율적인 데이터베이스 복구방법
CN113553010B (zh) 一种光盘文件校验方法、光盘刻录方法及计算设备
CN112346668B (zh) 一种光盘信息获取方法、计算设备及可读存储介质
CN113823331B (zh) 一种光盘追加刻录方法、装置及计算设备
US11275835B2 (en) Method of speeding up a full antivirus scan of files on a mobile device
CN108062262A (zh) 基于存储扇区数据的操作系统备份和还原方法及其系统
CN113066515A (zh) 一种光盘刻录方法、计算设备及可读存储介质
CN116522368A (zh) 一种物联网设备固件解密解析方法、电子设备、介质
CN105608150A (zh) 一种业务数据的处理方法及系统
US20030037279A1 (en) HDD data backup and recovery method
CN113655960B (zh) 一种光盘可读性修复方法及计算设备
CN114242119A (zh) 一种光盘数据修复方法、光盘数据检查方法及计算设备
CN109558752B (zh) 主机白名单机制下一种快速实现文件鉴别的方法
US20050010752A1 (en) Method and system for operating system anti-tampering
CN103136234A (zh) 处理数据的方法和装置
CN113407999B (zh) 一种文件保护方法、计算设备及存储介质
US9412412B2 (en) Logical block protection for tape interchange
CN113254397A (zh) 一种数据检查方法及计算设备
KR100706514B1 (ko) 하드디스크상의 운영체제 부팅 방법
KR20010046058A (ko) 데스크탑 컴퓨터의 전체 시스템 백업/복구 방법
CN115329391B (zh) 一种文本数据库的防护方法、装置、设备及介质
CN110681153B (zh) 游戏存档管理系统、方法、计算机设备及介质
CN114816542A (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