CN101587451A - 一种基于efi固件的数据备份和恢复方法 - Google Patents

一种基于efi固件的数据备份和恢复方法 Download PDF

Info

Publication number
CN101587451A
CN101587451A CNA2008100673078A CN200810067307A CN101587451A CN 101587451 A CN101587451 A CN 101587451A CN A2008100673078 A CNA2008100673078 A CN A2008100673078A CN 200810067307 A CN200810067307 A CN 200810067307A CN 101587451 A CN101587451 A CN 101587451A
Authority
CN
China
Prior art keywords
file
efi
interface
data
piece
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.)
Pending
Application number
CNA2008100673078A
Other languages
English (en)
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.)
SHANGHAI YANXIANG INTELLIGENT TECHNOLOGY Co Ltd
EVOC Intelligent Technology Co Ltd
Original Assignee
SHANGHAI YANXIANG INTELLIGENT TECHNOLOGY Co Ltd
EVOC Intelligent 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 SHANGHAI YANXIANG INTELLIGENT TECHNOLOGY Co Ltd, EVOC Intelligent Technology Co Ltd filed Critical SHANGHAI YANXIANG INTELLIGENT TECHNOLOGY Co Ltd
Priority to CNA2008100673078A priority Critical patent/CN101587451A/zh
Publication of CN101587451A publication Critical patent/CN101587451A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于EFI固件的数据备份和恢复方法,通过EFI_BLOCK_IO_PROTOCOL(块输入输出接口)对硬盘扇区进行读/写操作,通过EFI_FILE_PROTOCOL(文件接口)对文件进行读/写操作。在接收到数据备份指令时,将源分区中的引导扇区数据和所有文件备份入映像文件;在接收到系统恢复指令时,将映像文件中的引导扇区和文件数据信息写入目标分区。本发明的基于EFI固件的数据备份和恢复方法相对于目前主流的系统备份与恢复软件来说,其优点有二:一是无需安装到操作系统中,它可以集成到EFI固件中,保存在Flash里面,或者作为一个独立的EFI应用程序(*.efi可执行文件)保存在其它存储介质中(如U盘、光盘或硬盘);二是无需进入DOS操作系统,只需在EFI Pre-OS环境下就能够完成系统的备份与恢复操作。

Description

一种基于EFI固件的数据备份和恢复方法
技术领域
本发明涉及数据备份和恢复方法,更具体地说,涉及一种基于EFI固件的数据备份和恢复方法。
背景技术
从计算机应用的角度来说,硬盘数据的安全是至关重要的,特别是系统数据的安全更为显著。为保障硬盘数据安全,特别是系统安全,光靠杀毒软件是不够的,而对硬盘数据进行备份并在出现问题的时候进行恢复还原,显得更加可靠。备份与恢复是保障硬盘数据(特别是系统数据)纯净、完整的最有效的方法。
对于系统备份来说,目前主流的系统备份与恢复软件主要有SymantecGhost和一键恢复,它们都需要安装到操作系统中,而且必须在DOS界面下进行恢复,操作起来有点复杂,对于一般的电脑用户来说不大容易掌握。
EFI(Extensible Firmware Interface,可扩展固件接口)是Intel提出的全新计算机固件接口标准,它正逐步取代传统的BIOS。EFI提供了一个高效的嵌入式应用平台,可根据需要开发出各种各样特殊的应用。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种基于EFI固件的数据备份和恢复方法,其摆脱了数据备份与恢复时对操作系统的依赖。本发明属于EFI应用程序,利用EFI固件所提供的标准协议接口进行编程实现,在EFI Shell环境下运行。本发明完全基于EFI固件接口技术,不依赖于操作系统,也无需任何启动光盘或数据恢复盘。
本发明解决其技术问题所采用的技术方案是:构造一种基于EFI固件的数据备份和恢复方法,在接收到数据备份指令时,执行以下步骤:
S11:根据输入指令,通过EFI块输入输出接口获取源分区的参数信息,通过EFI文件接口创建映像文件,其中源分区是指需要备份的数据所位于的分区;
S12:通过EFI块输入输出接口和EFI文件接口,将源分区的引导扇区数据备份入映像文件;
S13:通过EFI文件接口,将源分区中的所有文件和文件夹备份入映像文件;
在接收到数据恢复指令时,执行以下步骤:
S21:通过EFI文件接口读取映像文件信息,判断目标分区的容量是否足够,如果是,进入步骤S22,否则,终止恢复操作;其中,目标分区是指在硬盘的哪个分区将备份的数据恢复到其中,该分区可以是源分区,也可以是硬盘中别的分区;
S22:通过EFI块输入输出接口和EFI文件接口,将映像文件中的引导扇区数据信息写入目标分区的引导扇区;
S23:通过EFI块输入输出接口和EFI文件接口,将映像文件中的文件和文件夹的数据信息写入目标分区。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S12包括以下步骤:
S121:通过EFI块输入输出接口,读取源分区的引导扇区数据,计算其校验值,并将引导扇区数据及其校验值封装成数据包;
S122:通过EFI文件接口,将数据包写入映像文件。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S13包括以下步骤:
S131:将源分区的所有文件和文件夹组合或分割为一预设值大小的数据块;该预设值的大小优选为2兆字节,即可实施为:将读取的文件和文件夹数据,写入源缓冲(2兆字节);
S132:计算各个数据块的校验值并压缩各个数据块;
S133:将压缩后的数据块及其校验值封装为数据包,通过EFI文件接口,将数据包写入映像文件。对于数据块压缩以及封装,可以是实施为:当源缓冲满或遍历结束时,将源缓冲中的数据压缩至目标缓冲(32兆字节),并计算其校验值;当目标缓冲满或遍历结束时,将目标缓冲中的数据封装为数据包,通过EFI文件接口,将数据包写入映像文件。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S131包括以下步骤:
S1311:通过EFI块输入输出接口,从根目录开始读取每一个目录文件,并从目录文件中逐个读取目录项;
S1312:根据目录项,生成每一个的文件或文件夹的完整路径;如果该目录项对应的是文件夹或长度为0的文件,进入步骤S1313;如果该目录项对应的是长度大于0的文件,则进入步骤S1314;
S1313:将文件或文件夹的目录项及完整路径,进行组合或分割为一预设值大小的数据块;进入步骤S132;可实施为写入源缓冲,如果是文件夹则进行递归调用;
S1314:根据文件的完整路径并通过EFI文件接口,打开并读取文件内容,然后将其目录项、完整路径及文件内容,进行组合或分割为一预设值大小的数据块,可实施为写入源缓冲;进入步骤S132。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S22包括以下步骤:
S221:通过EFI文件接口,从映像文件读取引导扇区的数据包,并对其进行校验,如果校验成功,进入步骤S222;否则,进入步骤S24;
S222:通过EFI块输入输出接口,将数据包中的引导扇区的数据信息写入目标分区的引导扇区。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S23包括以下步骤:
S231:通过EFI文件接口,从映像文件读取每一个的数据包,将数据包中的数据块解压,并对其进行校验,如果校验成功,进入步骤S232;否则,进入步骤S24;
S232:通过EFI块输入输出接口,将文件和文件夹的数据信息写入目标分区。
在本发明所述的基于EFI固件的数据备份和恢复方法中,所述步骤S232包括以下步骤:
S2321:从解压包中逐个取出文件或文件夹数据信息,对于文件夹,通过EFI块输入输出接口,将其目录项写入目标分区文件系统相应的目录文件存放位置中,然后创建其自身的目录文件,并添加“.”和“..”两个目录项;
S2322:对于文件,通过EFI块输入输出接口,将其目录项写入目标分区文件系统相应的目录文件存放位置中,如果文件长度大于0,则分配新的空间,并将文件内容写入其中。
在本发明所述的基于EFI固件的数据备份和恢复方法中,在目标分区中创建的目录文件的初始大小为一个簇;在分配存储空间的时,通过EFI块输入输出接口,同步更新FAT表。
在本发明所述的基于EFI固件的数据备份和恢复方法法中,所述步骤S21和S22之间还包括:通过EFI块输入输出接口,将目标分区格式化为FAT格式的步骤。
在本发明所述的基于EFI固件的系统备份和恢复方法中,所述校验值是四个字节的CRC校验值,数据包以四个字节表示自身长度。
在本发明所述的基于EFI固件的系统备份和恢复方法中,使用基于LZ77的压缩算法对数据进行压缩,数据块的预设值大小是2兆字节。
在本发明所述的基于EFI固件的数据备份和恢复方法中,是在文件级别上对源分区进行完全备份。
本发明提供简单的文本界面,采用指令输入的方式接收用户的操作。
实施本发明的基于EFI固件的数据备份和恢复方法,具有以下有益效果:一是本发明是在文件级别上实现对系统分区数据的完全备份,生成单个映像文件,并保存在系统的其它分区中;当系统出现问题,甚至无法进入操作系统时,可以方便地在EFI Shell下运行本工具,根据映像文件将系统恢复到备份时的状态;二是本发明不依赖于操作系统,无须安装,在EFI Pre-OS环境下运行,使用非常方便;三是本发明是在文件级别上对硬盘分区中的数据进行备份和恢复,不限于对操作系统的备份和恢复,对任何FAT32文件系统格式分区中的文件数据都适用;最后本发明还可以利用恢复过程实现操作系统的克隆安装。
相对于目前主流的系统备份与恢复软件来说,本发明的优点有二:一是无需安装到操作系统中,它可以集成到EFI固件中,保存在Flash里面,或者作为一个独立的EFI应用程序(*.efi可执行文件)保存在其它存储介质中(如U盘、光盘或硬盘);二是无需进入DOS操作系统,只需在EFI Pre-OS环境下就能够完成系统的备份与恢复操作。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明基于EFI固件的数据备份和恢复方法一实施例的数据备份方法的流程图;
图2是本发明基于EFI固件的数据备份和恢复方法一实施例的数据恢复方法的流程图;
图3是本发明基于EFI固件的数据备份和恢复方法一实施例的操作界面示意图。
具体实施方式
本发明所描述的数据备份和恢复方法是基于EFI固件基础之上,使用标准的EFI协议接口进行编程实现。使用EFI_BLOCK_IO_PROTOCOL(块输入输出接口)对硬盘扇区进行读/写操作,使用EFI_FILE_PROTOCOL(文件接口)对文件进行读/写操作。EFI固件运行在32位的保护模式下,为用户提供了一个高效的Pre-OS应用平台。EFI固件在完成平台初始化之后,启动管理器可以选择引导操作系统,也可以选择启动到EFI Shell。EFI Shell可用于执行其它的EFI应用程序。本发明就是通过EFI Shell运行的。
本发明对源分区采用文件级别的完全备份。源分区可以是装有操作系统的分区,也可以是只保存文件数据的分区,分区必须装有FAT32文件系统。备份时以文件为单位备份到映像文件中,另外还包括源分区的引导扇区数据,以保证恢复后的操作系统能够正常引导。
用户必须清楚要备份的是哪一块硬盘中的哪一个分区,映像文件存放在哪一块硬盘中的哪一个分区。映像文件必须保存在其它分区中,该分区必须足够大,而且装有FAT格式的文件系统。备份数据保存在单个映像文件中,大小不能超过4GB。一般来说映像文件大小是源分区实际使用大小的一半左右。
为减少存储空间,需要数据进行压缩处理。本发明采用EFI_Toolkit_1.10提供的基于LZ77压缩算法的数据压缩接口对数据进行压缩。由于文件大小差别很大,为了节省时间并合理利用内存资源,需要对小文件进行组合,对大文件进行切分,得到一个预定大小(2兆字节)的数据块后再进行压缩。同时为保证数据的正确性,对每一个数据块都要计算CRC校验值,在恢复时根据此校验值验证备份数据的完整性。为了能从映像文件中把备份的文件数据恢复出来,需要添加若干附加的信息,附加信息和备份数据封装在一起组成数据包。把备份数据写入映像文件时,以封装包为单位进行写入,以减少写入次数,同时减少时间消耗。
在进行系统备份与恢复之前,先进行初始化,获取硬盘的相关信息。首先,通过EFI启动服务LocateHandle()和HandleProtocol()获取所有支持块输入输出协议的设备,并从这些设备中筛选出硬盘设备,将对应于整块硬盘的EFI块输入输出接口保存下来,其个数与硬盘的个数相等。然后使用EFI块输入输出接口读取硬盘的MBR(Master Boot Record,主引导记录)和EBR(Extended Boot Record,扩展引导记录),获取硬盘的分区信息。最后,通过EFI启动服务获取硬盘分区文件系统的EFI文件接口,并使用该接口创建或打开映像文件。
如图1所示,系统备份时的具体过程如下:
S11:根据输入指令,使用EFI块输入输出接口获取源分区的参数信息,包括文件系统类型、分区大小、引导扇区起始地址、FAT表起始地址、根目录起始地址、每簇扇区数等。使用EFI文件接口在指定的其它分区中创建映像文件。分配缓冲资源,包括2兆字节的源缓冲和32兆字节的目标缓冲。
S12:使用EFI块输入输出接口,读取源分区的引导扇区数据,这部分数据量比较小,不进行压缩处理,只计算校验值,并单独封装成数据包。然后,使用EFI文件接口将封装的数据包写入映像文件。在对装有操作系统的分区进行备份时,备份引导扇区数据是必须的,这样才能保证恢复后的操作系统能够正常引导。
S13:将源分区中的所有文件和文件夹备份入映像文件。在实施中采用递归遍历法遍历所有的文件和文件夹,每一个文件或文件夹都作为一个独立的个体进行备份,备份的信息包括目录项、完整路径,以及文件的内容(对于文件夹和长度为0的文件,则无此项)。首先,使用EFI块输入输出接口,从根目录开始读取每一个目录文件。然后,对每一个目录文件,把长目录项/短目录项逐对抽取出来。根据当前路径和目录项得出该文件或文件夹的完整路径,并将目录项和完整路径写入源缓冲。如果是文件夹,则进行递归调用;如果是长度大于0的文件,则使用EFI文件接口打开该文件,读出其内容并写入源缓冲。最后,当源缓冲满或遍历结束时,将源缓冲中的数据压缩至目标缓冲,并计算四字节的CRC校验值,CRC校验值与压缩数据长度值也一起写入目标缓冲;当目标缓冲满或遍历结束时,将目标缓冲中的数据封装成数据包,以四个字节表示数据包的长度,使用EFI文件接口将数据包写入映像文件中。
其中,EFI块输入输出接口的数据结构定义为:
typedef struct_EFI_BLOCK_IO_PROTOCOL{
    UINT64                 Revision;
    EFI_BLOCK_IO_MEDIA     *Media;
    EFI_BLOCK_RESET        Reset;
    EFI_BLOCK_READ         ReadBlocks;
    EFI_BLOCK_WRITE    WriteBlocks;
    EFI_BLOCK_FLUSH    FlushBlocks;
}EFI_BLOCK_IO_PROTOCOL;
EFI块输入输出接口的读取函数定义为:
EFI_STATUS
(EFIAPI *EFI_BLOCK_READ)(
    IN EFI_BLOCK_IO     *This,
    IN UINT32           MediaId,
    IN EFI_LBA          LBA,
    IN UINTN            BufferSize,
    OUT VOID            *Buffer
  );
EFI块输入输出接口的写入函数定义为:
EFI_STATUS
(EFIAPI*EFI_BLOCK_WRITE)(
    IN EFI_BLOCK_IO    *This,
    IN UINT32          MediaId,
    IN EFI_LBA         LBA,
    IN UINTN           BufferSize,
    IN VOID            *Buffer
  );
EFI文件接口的数据结构定义为:
typedef struct_EFI_FILE{
    UINT64           Revision;
    EFI_FILE_OPEN    open ;
    EFI_FILE_CLOSE   Close;
    EFI_FILE_DELETE  Delete;
    EFI_FILE_READ    Read;
    EFI_FILE_WRITE         Write;
    EFI_FILE_GET_POSITION  GetPosition;
    EFI_FILE_SET_POSITION  SetPosition;
    EFI_FILE_GET_INFO      GetInfo;
    EFI_FILE_SET_INFO      SetInfo;
    EFI_FILE_FLUSH         Flush;
}EFI_FILE;
EFI文件接口的打开函数定义为:
EFI_STATUS
(EFIAPI*EFI_FILE_OPEN)(
    IN EFI_FILE     *This,
    OUT EFI_FILE    *NewHandle,
    IN CHAR16       *FileName,
    IN UINT64       OpenMode,
    IN UINT64       Attributes
  );
EFI文件接口的读函数定义为:
EFI_STATUS
(EFIAPI*EFI_FILE_READ)(
    IN EFI_FILE    *This,
    IN OUT UINTN   *BufferSize,
    OUT VOID       *Buffer
);
EFI文件接口的写函数定义为:
EFI_STATUS
(EFIAPI*EFI_FILE_WRITE)(
    IN EFI_FILE    *This,
    IN OUT UINTN   *BufferSize,
IN VOID     *Buffer
);
如图2所示,系统恢复时的具体过程如下:
S21:使用EFI文件接口读取映像文件信息,判断目标分区的容量是否足够,如果是,进入步骤S22;否则,将不能保证所有文件和文件夹都能正常恢复,终止恢复操作。
S22:使用EFI块输入输出接口,从映像文件中读出引导扇区的数据包,进行CRC校验。如果校验成功,则使用EFI块输入输出接口将该部分数据写入目标分区的引导扇区;如果校验出错,说明映像文件已经受损,则终止恢复操作。
S23:使用EFI文件接口,从映像文件中按顺序读出每一个封装的数据包,从数据包中取出压缩包,解压并进行CRC校验。如果校验出错,说明映像文件已经受损,则终止恢复操作。如果校验成功,则从解压包中逐个提取出文件和文件夹的数据信息。先根据完整路径,使用EFI块输入输出接口,从目标分区的文件系统中找到相应的目录文件存放位置,将目录项添加进去。然后,对于文件夹则分配一簇大小的空间作为其自身的目录文件,并添加“.”和“..”两个目录项;对于长度大于0的文件则根据其长度以簇为单位分配空间,并将文件内容写入其中。最后,修改相应目录项的起始簇参数,使其指向新分配的起始簇。在分配空间时,需要使用EFI块输入输出接口,同步更新FAT表。在进行文件和文件夹的恢复时,需要对FAT表、目录文件和文件内容三部分进行操作。为提高效率,分配一块内存用于保存整个FAT表的副本,每次先修改FAT表副本,在关闭文件时再同步更新目标分区中的FAT表;目录文件也要在内存中建立副本,每次先修改目录文件副本,在关闭文件时再同步更新目标分区中的目录文件。
另外,在执行步骤S22之前还可使用EFI块输入输出接口,将目标分区格式化为FAT格式,目标分区中原来的所有数据将被删除。
其中,映像文件头结构,用于保存签名、版本、引导扇区数据等信息,其数据结构定义为:
typedef struct_IMAGE_HEADER12
{
    CHAR8   Signature[8];   //″EVOC SBR″
    UINT8   MajorVersion;   //Version1.2,Major=1,Minor=2
    UINT8   MinorVersion;
    BOOLEAN IsFat32;
    UINT32  SectorsNeeded;
    UINT8   DBR[512];
    UINT8   FsInfo[512];
    UINT8   BkSectors[1536];//3 Sectors
    UINT8   Sector2[512];  //for win98 extended loader code
    UINT8   Sector12[512];//for win2k/xp extended loader code
    UINT8   Reserved[9];
}IMAGE_HEADER12;
短目录项的数据结构定义为:
typedef struct_SHORT_DIR_ENTRY
{
    CHAR8  Name[11];
    UINT8  Attr;
    UINT8  NTRes;
    UINT8  CrtTimeTenth;
    UINT16 CrtTime;
    UINT16 CrtDate;
    UINT16 LstAccData;
    UINT16 FstClusHI;
    UINT16 WrtTime;
    UINT16 WrtDate;
    UINT16 FstClusLO;
    UINT32 FileSize;
}SHORT_DIR_ENTRY;
长目录项的数据结构定义为:
typedef struct_LONG_DIR_ENTRY
{
    UINT8  Order;       //Sequence number for slot
    CHAR16 Name0_4[5];  //First 5 Unicode characters
    UINT8  Attr;        //Attributes,always=0x0F
    UINT8  Reserved;    //Reserved,always 0x00
    UINT8  Checksum;    //Checksum of 8.3 name
    CHAR16 Name5_10[6]; //6 more Unicode characters
    UINT16 FstClus;     //First cluster number,must be 0
    CHAR16 Name11_12[2];//Last 2 Unicode characters
}LONG_DIR_ENTRY;
目录文件信息结构,用于记录目录文件的起始簇号、大小、当前空闲位置、当前目录中的目录项以及当前目录自身所对应的短目录项。恢复过程中,单条路径上的所有目录文件被连接成一个目录文件链表,保存在内存中作为目录文件的副本。其数据结构定义为:
typedef struct_DIR_FILE_INFO
{
    EFI_LIST_ENTRY     Link;
    SHORT_DIR_ENTRY  *pShortDirEntry;//point to itself
    UINT32 StartCluster;
    UINT32 EndCluster;
    UINT32 DirFileSize;
    UINT32 FreeSize;
    UINT32 FreeOffset;
    CHAR16 FilePath[256];
  UINT8  *DirFile;
}DIR_FILE_INFO;
文件系统信息结构,用于保存当前文件系统的信息,包括FAT表起始位置、大小、空闲位置,数据起始位置,和FAT表副本等。文件和文件夹在创建和写入时都需要更新该结构中相应的信息。其数据结构定义为:
typedef struct_FILE_SYSTEM_INFO
{
    EFI_BLOCK_IO  *pBlockIo;
    UINT32 Fat1StartSector;
    UINT32 Fat2StartSector;
    UINT32 FatSize;
    UINT32 SectorsPerFat;
    UINT32 DataStartSector;
    UINT32 PrevIndex;
    UINT32 FreeIndex;
    UINT32 MaxIndex;
    UINT32 SectorsPerCluster;
    UINT32 ClusterSize;
    UINT32 *pFatBuffer;
}FILE_SYSTEM_INFO;
自定义文件句柄,在文件恢复过程中创建文件时生成并返回给调用者,用于保存文件的信息,包括起始簇号、结束簇号、目录文件指针、短目录项指针和文件系统信息指针等,在文件写入时,需要以它作为输入参数。其数据结构定义为:
typedef struct_ETOOL_FILE_HANDLE
{
    UINT8 Attribute;
    UINT32 StartCluster;
    UINT32 EndCluster;
    UINT32 CurSector;//current sector for write opertion
    UINT32 ByteOffset;
    UINT32 BytesFree;
    DIR_FILE_INFO    *pParentDirFileInfo;
    DIR_FILE_INFO    *pChildDirFileInfo;
    SHORT_DIR_ENTRY  *pShortDirEntry;
    FILE_SYSTEM_INFO *pFileSystemInfo;
}ETOOL_FILE_HANDLE;
对于本发明的基于EFI固件的系统备份和恢复方法,其开发环境:
1、调试平台
主板:FSC-1719VNA(A3)
芯片组:945G+ICH7+W83627DHG
CPU:
Figure A20081006730700181
D CPU 3.06GHz
内存:512MB(DDR-II)
硬盘:两块Maxtor(40GB)
EFI BIOS:Aptio v4.5.3
2、开发平台
主机:百盛
CPU:Intel Pentium 4 CPU 2.80GHz
芯片组:865P+ICH5+W83627HF
内存:512MB(DDR)
硬盘:三星80GB
操作系统:WindowsXP
编译工具:Microsoft Visual Studio.Net 2003
编码工具:Source Insight 3.5
开发工具:EFI_Toolkit_1.10
如图3所示,在本发明的实施方式中采用文本界面,用户操作以指令的方式输入。界面中列出平台上挂接的所有硬盘,并显示各硬盘的分区信息。用户按“F1”后,可进入帮助界面,解释指令的格式和用法。

Claims (10)

1、一种基于EFI固件的数据备份和恢复方法,其特征在于,在接收到数据备份输入指令时,执行以下步骤:
S11:通过EFI文件接口,创建映像文件;
S12:通过EFI块输入输出接口和EFI文件接口,将源分区的引导扇区数据备份入映像文件;
S13:通过EFI文件接口,将源分区中的每一个文件和文件夹备份入映像文件;
在接收到数据恢复输入指令时,执行以下步骤:
S21:根据映像文件,判断目标分区的容量是否足够,如果是,进入步骤S22,否则,进入步骤S24;
S22:通过EFI块输入输出接口和EFI文件接口,将映像文件中的引导扇区数据信息写入目标分区的引导扇区;
S23:通过EFI块输入输出接口和EFI文件接口,将映像文件中的文件和文件夹的数据信息写入目标分区;
S24:结束。
2、根据权利要求1所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S12包括以下步骤:
S121:通过EFI块输入输出接口,读取源分区的引导扇区数据,计算其校验值,并将引导扇区数据及其校验值封装成数据包;
S122:通过EFI文件接口,将数据包写入映像文件。
3、根据权利要求2所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S13包括以下步骤:
S131:将源分区中的所有文件和文件夹组合或分割为一预设值大小的数据块;
S132:计算各个数据块的校验值并压缩各个数据块;
S133:将压缩后的数据块及校验值封装为数据包,通过EFI文件接口,将数据包写入映像文件。
4、根据权利要求3所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S131包括以下步骤:
S1311:通过EFI块输入输出接口,读取目录项;
S1312:根据目录项,生成每一个的文件或文件夹的完整路径;如果该目录项对应的是文件夹或长度为0的文件,进入步骤S1313;如果该目录项对应的是长度大于0的文件,则进入步骤S1314;
S1313:将文件或文件夹的目录项及完整路径,进行组合或分割为一预设值大小的数据块;进入步骤S132;
S1314:根据文件的完整路径并通过EFI文件接口,读取其文件内容,将其目录项、完整路径及文件内容,进行组合或分割为一预设值大小的数据块;进入步骤S132。
5、根据权利要求4所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S22包括以下步骤:
S221:通过EFI文件接口,从映像文件读取引导扇区的数据包,并对其进行校验,如果校验成功,进入步骤S222;否则,进入步骤S24;
S222:通过EFI块输入输出接口,将数据包中的引导扇区的数据信息写入目标分区的引导扇区。
6、根据权利要求4所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S23包括以下步骤:
S231:通过EFI文件接口,从映像文件读取每一个的数据包,将数据包中的数据块解压,并对其进行校验,如果校验成功,进入步骤S232;否则,进入步骤S24;
S232:通过EFI块输入输出接口,将文件和文件夹的数据信息写入目标分区。
7、根据权利要求6所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S232包括以下步骤:
S2321:对于文件夹,通过EFI块输入输出接口,将其目录项写入相应的目录文件中,并在目标分区中为其创建自身的目录文件;
S2322:对于文件,通过EFI块输入输出接口,将其目录项写入相应的目录文件中,如果文件长度大于0,则分配相应大小的存储空间,同时将文件内容写入其中。
8、根据权利要求7所述的基于EFI固件的数据备份和恢复方法,其特征在于,在目标分区中创建的目录文件的初始大小为一个簇;在分配存储空间的时候,通过EFI块输入输出接口,同步更新FAT表。
9、根据权利要求1~7任一所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述步骤S21和S22之间还包括:通过EFI块输入输出接口,将目标分区格式化为FAT格式的步骤。
10、根据权利要求3~7任一所述的基于EFI固件的数据备份和恢复方法,其特征在于,所述校验值是四个字节的CRC校验值,数据包以四个字节表示自身长度;根据LZ77压缩算法,压缩各个数据块,数据块的预设值大小是2兆字节。
CNA2008100673078A 2008-05-20 2008-05-20 一种基于efi固件的数据备份和恢复方法 Pending CN101587451A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008100673078A CN101587451A (zh) 2008-05-20 2008-05-20 一种基于efi固件的数据备份和恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008100673078A CN101587451A (zh) 2008-05-20 2008-05-20 一种基于efi固件的数据备份和恢复方法

Publications (1)

Publication Number Publication Date
CN101587451A true CN101587451A (zh) 2009-11-25

Family

ID=41371705

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100673078A Pending CN101587451A (zh) 2008-05-20 2008-05-20 一种基于efi固件的数据备份和恢复方法

Country Status (1)

Country Link
CN (1) CN101587451A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833486A (zh) * 2010-04-07 2010-09-15 山东高效能服务器和存储研究院 一种远程备份和恢复系统设计方法
CN102024114A (zh) * 2011-01-14 2011-04-20 上海交通大学 基于统一可扩展固定接口的恶意代码防范方法
CN103678047A (zh) * 2012-09-21 2014-03-26 联想(北京)有限公司 一种数据处理方法及电子设备
CN104503870A (zh) * 2015-01-19 2015-04-08 联想(北京)有限公司 电子设备和数据处理方法
CN104516787A (zh) * 2013-09-27 2015-04-15 联想(北京)有限公司 一种信息处理的方法及电子设备
CN104834575A (zh) * 2015-05-07 2015-08-12 杭州昆海信息技术有限公司 一种固件恢复方法及装置
CN106909351A (zh) * 2015-12-22 2017-06-30 中电科技(北京)有限公司 一种基于uefi固件的ext文件系统的实现方法
CN109783276A (zh) * 2018-12-19 2019-05-21 远光软件股份有限公司 基于专用压缩卡的数据备份及恢复装置和方法
CN110083404A (zh) * 2019-04-23 2019-08-02 深圳昆仑通态科技有限责任公司 人机界面设备的数据处理方法及系统和人机界面设备
CN112306754A (zh) * 2020-11-05 2021-02-02 中国电子信息产业集团有限公司 基于可信的uefi固件恢复方法、装置、介质和设备

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833486B (zh) * 2010-04-07 2014-08-20 浪潮电子信息产业股份有限公司 一种远程备份和恢复系统设计方法
CN101833486A (zh) * 2010-04-07 2010-09-15 山东高效能服务器和存储研究院 一种远程备份和恢复系统设计方法
CN102024114A (zh) * 2011-01-14 2011-04-20 上海交通大学 基于统一可扩展固定接口的恶意代码防范方法
CN102024114B (zh) * 2011-01-14 2012-11-28 上海交通大学 基于统一可扩展固定接口的恶意代码防范方法
CN103678047B (zh) * 2012-09-21 2016-06-01 联想(北京)有限公司 一种数据处理方法及电子设备
CN103678047A (zh) * 2012-09-21 2014-03-26 联想(北京)有限公司 一种数据处理方法及电子设备
CN104516787A (zh) * 2013-09-27 2015-04-15 联想(北京)有限公司 一种信息处理的方法及电子设备
CN104503870A (zh) * 2015-01-19 2015-04-08 联想(北京)有限公司 电子设备和数据处理方法
CN104834575A (zh) * 2015-05-07 2015-08-12 杭州昆海信息技术有限公司 一种固件恢复方法及装置
CN104834575B (zh) * 2015-05-07 2018-04-06 紫光华山信息技术有限公司 一种固件恢复方法及装置
CN106909351A (zh) * 2015-12-22 2017-06-30 中电科技(北京)有限公司 一种基于uefi固件的ext文件系统的实现方法
CN106909351B (zh) * 2015-12-22 2021-04-20 中电科技(北京)有限公司 一种基于uefi固件的ext文件系统的实现方法
CN109783276A (zh) * 2018-12-19 2019-05-21 远光软件股份有限公司 基于专用压缩卡的数据备份及恢复装置和方法
CN110083404A (zh) * 2019-04-23 2019-08-02 深圳昆仑通态科技有限责任公司 人机界面设备的数据处理方法及系统和人机界面设备
CN110083404B (zh) * 2019-04-23 2022-12-30 深圳昆仑通态科技有限责任公司 人机界面设备的数据处理方法及系统和人机界面设备
CN112306754A (zh) * 2020-11-05 2021-02-02 中国电子信息产业集团有限公司 基于可信的uefi固件恢复方法、装置、介质和设备
CN112306754B (zh) * 2020-11-05 2024-05-24 中国电子信息产业集团有限公司 基于可信的uefi固件恢复方法、装置、介质和设备

Similar Documents

Publication Publication Date Title
CN101587451A (zh) 一种基于efi固件的数据备份和恢复方法
CN100458699C (zh) 一种实现固件更新的方法和系统
US5463772A (en) Transparent peripheral file systems with on-board compression, decompression, and space management
WO2015070521A1 (zh) 将ubi格式的系统文件制作成工厂烧录映像文件方法
US6701450B1 (en) System backup and recovery
US8015157B2 (en) File sharing system, file server, and method for managing files
CN103106091A (zh) 一种基于可移动存储介质的操作系统的启动系统和方法
US20070208893A1 (en) File-based compression on a fat volume
KR20050061378A (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
GB2353611A (en) Disk image backup/restore with data preparation phase
US20090055452A1 (en) Journaling FAT file system and accessing method thereof
EP2476049A1 (en) Data storage access device
CN101226477A (zh) 一种适合移动应用的Linux操作系统的实现方法
US20110107039A1 (en) Methods for implementation of data formats on a removable disk drive storage system
CN107111726B (zh) 对fat文件系统的文件加密支持
CN100472447C (zh) 一种实现软件更新的方法及装置
CN102043652B (zh) 嵌入式设备根文件系统的处理系统和处理方法
CN111258666A (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
US8266105B2 (en) System for automatically replicating a customer's personalized computer system image on a new computer system
US20050283456A1 (en) Systems and methods for building a disk image
CN103778033A (zh) 一种类Unix操作系统多时间点备份的方法及装置
Lewis Lvm howto
US20090164538A1 (en) Data storage apparatus and initialization method thereof
Cisco Using the Flash File System
US7024493B1 (en) Bootable CD for transferring files independently of computer operating systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Liang Taiwen

Inventor after: He Caiwang

Inventor before: Liang Taiwen

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LIANG TAIWEN TO: LIANG TAIWEN HE CAIWANG

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20091125