基于计算机硬盘分区的数据备份和恢复方法

文档序号:6458714阅读:147来源:国知局
专利名称:基于计算机硬盘分区的数据备份和恢复方法
技术领域
本发明涉及一种计算机数据备份和恢复方法,尤其是一种基于计 算机硬盘分区的数据备份和恢复方法,属于计算机安全技术领域。
背景技术
随着计算机网络的高速发展,如何保障计算机系统安全成为备受 关注的问题。 一些网络木马、蠕虫等病毒和一些流氓软件更新速度极 快,能够轻易越过杀毒软件和防火墙的监视,轻则给计算机操作带来 麻烦,重则直接导致计算机的瘫痪。
为此,除了各种防病毒和防火墙等计算机安全软件不断涌现之
外,还出现了种种系统备份与还原的软件,如虚拟还原,ghost等, 其中有的备份软件通过划分独立的隐藏分区作为数据的备份,有的以 文件的方式进行备份。这些备除方法虽均具有一定的有益效果,但分 别存在以下问题首先,都需牺牲硬盘空间来换取系统的安全。其次, 利用系统还原软件对系统进行还原以后,自系统备份点以后时刻对计 算机的所有改动以及重要数据将全部被清除,往往时间久了用户也不 知道自己存放了哪些重要的数据,因此仍有可能造成重要数据的丟 失。尤其是,随着备份软件在计算机用户中的普及应用,有些计算机 病毒会在扫描备盼点,将备盼点删除以后才表现出病毒的明显特征, 从而导致计算机数据难以恢复。
另外,由于备份的数据量比较大, 一般是从D0S系统下进行备份, 虽然有的软件可以从windows操作系统下进行备份,但是备份过程中 占用大量的资源,在备份过程中不能运行大型的应用软件,因此对于 一些实时在线的计算机控制系统来说,不可能随便停机,而运行的应用软件不允许停止运行,因此对实时计算机控制系统实现经常的* 非常困难。
检索发现,申请号为01134571.3的中国专利申请公开了一种硬 盘数据加密备份及还原方法,包括以下步骤在硬盘内设置一个分区; 隐藏该分区,使得该分区不能被操作系统或其他基于文件系统的程序 访问;将用户指定的备份数据存储在该分区;将隐藏分区中的数据还 原到可被访问的硬盘分区中。用户可以方便地在Windows操作系统下 进行硬盘数据备盼及还原。此外,申请号为03156149. 7的中国专利 公开了一种计算^L安全系统及其实现方法,该方法包括以下步骤创 建硬盘驱动器;创建虚拟磁盘驱动器;生成逻辑驱动器;将主机保护 区模拟成磁盘分区并可以通过打开逻辑驱动器直接访问主机保护区。 此两专利前者存在的不足之处一是当系统比较大时,占用的硬盘空间 大,二是进行数据的备份和还原都要比较长的时间;后者对用户的要 求比较高,不具有普遍使用性。

发明内容
本发明要解决技术问题是针对以上现有技术存在的缺点,提出 一种可以保证计算机系统安全,并且几乎不占用计算机资源的基于计 算机硬盘分区的数据备份和恢复方法。
计算才几知识告诉人们,文件分配表(File Allocation Table简 称FAT)和文件目录表(File Directory Table简称FDT)是计算机进 行文件存储管理的关键文件。
文件分配表建立在簇(Cluster)的概念基础上。计算机中文件 占用磁盘空间的基本单元不是字节而是蔟。 一般情况下,软盘每簇是 1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、 8、16、 32、 64……同一个文件的数据并不一定完整地存放在》兹盘的一个 连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存 储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信 息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位 置并正确读出。为了实现文件的链式存储,硬盘上必须准确地记录哪 些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容 的下一个簇的簇号。对一个文件的最后一簇,则要指明本蔟无后继簇。 这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信 息。初形成的FAT中所有项都标明为"未占用",但如果》兹盘有局部 损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为"坏蔟", 以后存文件时就不会再使用这个簇了。 FAT的项数与硬盘上的总簇数 相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存》丈 簇号。即文件分配表中保存文件占用的簇号、簇的地址及占用标志。 文件目录表(File Directory Table)又称才艮目录区(R00T区) 紧跟在FAT2的下一个扇区,长度为32个扇区(256个表项)。如果支 持长文件名,则每个表项为64个字节,其中,前32个字节为长文件 链接说明;后32个字节为文件属性说明,包括文件长度、起始地址、 曰期、时间等。如不支持长文件名,则每个表项为32个字节的属性说 明。
申请人经过深入分析研究发现,只要设法保存并监控处理好文件 分配表和文件目录表,即可扼住保证计算机安全的咽喉。为此,申请 人提出本发明的基于计算机硬盘分区的数据名"除和恢复方法,包括以 下步骤第一步、创建隐藏分区一一将分区表中常规分区之一的标志值以预定 特征值更改,将该分区转换为常规操作系统应用程序不能访问的隐藏
分区;
第二步、创建虚拟分区 一一将读入内存的隐藏分区预定特征值在内存 中还原成原先的标志值,从而将隐藏分区在内存中转变成常规操作系 统可访问的虚拟分区;
第三步、备份关键文件一一读取当前文件分配表(FAT)和文件目录 表(FDT),将其保存到预定路径指引的隐藏分区中,形成备份文件分 配表和文件目录表;
第四步、数据监;^见处理一一动态监视计算机操作
A、 当监测到拟删除文件时,通过比照备份文件目录表及文件分配表 的对应表项适时还原当前文件分配表的相关表项,使存储拟删除文件 的数据基本单元实际上不会被新的其他文件占用;
B、 当监测到拟修改文件时,通过比照备份文件目录表及文件分配表 的对应表项适时扩展当前文件分配表的相关链接单元表项,使存储拟 修改文件的数据基本单元实际上不会被新的修改文件占用,修改文件 存储到链接单元;
即无论删除还是4务改,文件分配表和文件目录表中对应原有文件的簇 号、地址等信息均得到保留,对应原有文件的数据不会因覆盖而消失, 也不会无法寻址而丟失。
第五步、恢复原有数据一一通过虚拟分区,读取隐藏分区中的备份文 件分配表和文件目录表,覆盖当前文件分配表和文件目录表。由于常规操作系统应用程序不能访问隐藏分区,因此保存在其中
的备份文件分配表(FAT )和文件目录表(FDT )不会被轻易破坏,而
通过数据监视处理,由于实际上存储原有数据文件的数据基本单元不
会被占用,原有数据文件得到妥善保存,可以在需要时通过恢复文件
分配表和文件目录表而找到,因此使计算机的安全得到切实保证。并
且,以上过程只备份文件分配表和文件目录表,而无需备份数据文件,
因此几乎不占用计算机资源,备份和恢复迅速,便于推广应用。
本发明进一步的完善是,上述第三步读取当前文件分配表和文件
目录表并以预定名更改其文件名后,再保存到预定路径指引的隐藏分
区中,形成易名备份文件分配表和文件目录表。由于现有病毒都需要
通过文件分配表和文件目录表直接或间接破坏文件,因此采取以上措
施后,即使万一病毒进入隐藏分区,也会因无法辩识文件而不能破坏
备份文件分配表和文件目录表,从而形成双保险,更为安全。


下面结合附图对本发明作进一步的说明。
图l是本发明一个实施例的流程图。
图2是对应图1实施例的分区虛拟转换流程图。
图3是对应图1实施例的数据监视对删除文件处理的流程图。
图4是对应图1实施例的数据监视对修改文件处理的流程图。
图5是对应图1采用的微软Dskprobe. exe工具示意图。
具体实施例方式
实施例一
本实施例基于计算机硬盘分区的数据备份和恢复方法需要加载进入计算机系统内核的具有分区虛拟转换及数据修改监^L功能的程 序,其完整的基本实现过程参见图1。
首先将硬盘挂靠到装有Winodows操作系统的计算机上,通过DOS 中Fdisk或Windows系统下的PowerQuest PartitionMagic Pro软件, 对硬盘进行分区,分区类型可以为FAT32或NTFS类型。分区结束后, 通过微软的Dskprobe.exe磁盘扇区修改和编辑的工具(参见图5 ), 在主分区表数据中,找到系统分区的标志。在分区表中,OIH表示采 用12位FAT格式的D0S分区,04H表示采用16位FAT格式的DOS分 区,05H表示扩展的DOS分区,06H表示DOS3. 31+FAT16格式的分区, 07H表示WindowsNT下的NTFS格式分区,OBH表示Winodws下的FAT32 格式分区,找到对应的格式分区后,以预定特征值OFH修改该分区原 标志值,使其成为在Winodows下将不能被访问的隐藏分区。
接着,将操作系统安装在隐藏分区中,并加载进入计算机系统内 核、实现上述分区虚拟转换及数据修改监^f见功能的程序,这样可以有 效保证操作系统的安全。分区虚拟转换及数据修 文监4见功能的程序的 主要内容如下
隐藏分区虚拟转换的主要部分程序-
CLI ;建立堆栈,代表隐藏分区文件系统
XORAX,AX
MOV SS,AX
MOV SP,8C00 ;置堆栈指针为0000:8C00H
MOV SW ;将0000:8C00H的硬盘主引导记录传送到内存中,即隐藏分区信息的读取
JMP 061D ;下一条指令
MOVSI, 07BE ;分区首址
MOV BL, SUBARNUM ;分区数
CMPBYTEPTR[SI],SO ;是否为可引导分区
JZ 1PR0C
CMPBYTEPTR[S1,00 ;是否为不可引导分区 JNZ 2PR0C
ADD SI,+10 ;判断下一分区 DEC BL
JNZ7C22 ;所有分区都判断完了?
INT 18 ;无可引导分区,则进入ROM BASIC或死机
1PRO:
MOV DX,[SI] ;若为引导分区,则保存DX为磁头号(DH)和驱动器号(DL)
MOVCX,[SI+02] ;同时保存CX为道号(CH)和扇区号(CL)MOV BP,SI SS:
LDS SI,[BX
PUSH DS PUSH SI PUSH SS PUSH BX MOV DI,OPROC MOV CX,001B CLD REPZ MOVSB
CALL4PROC MOV SI,7DE6 RET 2PROC: MOV SI,68B XOR CH,CH LODSB MOV CL,AL LODSB PUSH SI
INT 10
MOV BX 8C00
;引导分区首址送BP中 ;初始化中断向量
;将硬盘基数表传送到CLI
;获取总扇区数,隐含扇区数,保留扇区,目录项字节数,目录表总字节,等.
;读指定扇区子程序 ;读取系统文件
;显示错误信息子程序
PUSH DI INT 13
JMP 8C00 4PROC:
MOV DX,[7C4D]
;重新读引导记录到8C00处 ;转入引导记录
数据监视部分主要程序语句 DWORD W1NAPI CheckFAT(LPVOID lPar咖)
〃检测磁盘目录变化情况 chartmp[MAX_PATH]; int ccount=0;
DWORD dwBytesReturned; HANDLE hMonitorDir;
CDirMonitorApp* obj = (CDirMonitorApp*)lParam; 〃参数转化
hMonitorDir=CreateFile( (LPCTSTR)DrvName,GENERIC—READ|GENERIC—WRITE,〃"C:\V',FILE_SHA RE_READ|FILE_SHARE—WRITE|FILE_SHARE—DELETE,NULL,OPEN—EXISTING FILE—FLAG—BACKUP—SEMANTICS, NULL); 消hMonitorDir =INVALID—HANDLE—VALUE ) return false;
char bufl(sizeoli[FILE—NOTIFYJNFORMATION)+MAX_PATH)*2];
FILE—NOTIFY—INFORMATION* pNotify=(FILE_NOTIFY—INFORMATION*)buf;
for(;;j" _ —
if( ::ReadDirectoryChangesW( hMonitorDir,pNotify,sizeof(buf),true,
FILE—NOTIFY_CHANGE_FILE_NAME|FILE—NOTIFY_CHANGE—DIR—NAME|FILE—NOTIFY_CHANGE_ATTRIBUTES|FILE—NOTIFY_CHANGE_SIZE|FILE—NOTIFY—CHANGE—LAST_WRITE|FILE_NOTIFY —CHANGE—LAST_ACCESS|FILE_NOTIFY_CHANGE—CREATION| FILE一NOTIFY—CHANGE_SECURITY,&dwBytesReturned,NULL,NULL)) {memset( tmp, 0, sizeof(tmp)); 〃ZeroMemory() WideCharToMultiByte( CP_ACP,0,pNotify->FileName,-l ,tmp,MAX_PATH,NULL,NULL); i《pNotify->NextEntryOffset !=0 ) {PFILE—NOTIFY—INFORMATION p^PFILE一NOTIFYJNFORMATION)((char"pNotify+pNotify》Nex伍ntiyOffset); memset(加p, 0, sizeof(tmp)); WideCharToMult氾yte(CP一ACP,0,p-〉FileN咖e,-Ump,MAX-PATH,NULL,NULL );〃p->FileNameLength/
2}
3休^11*貝(^&->八(^011){//检测到磁盘文件变动信息
case FILE_ACTION_ADDED: //文件增加事件 〃获^FAT数福并进行比较 GetFATAndCmp(); break;
case FILE_ACTION_REMOVED: 〃文件删除事件 GetFATAndCmp(); break;
case FILE_ACTION—MODIF正D:〃文件修改事件
GetFATAndCmp();
break; default:
break; }
memset(buf'O,sizeof(buf));
return 0;} void GetFATAndCmp(void) {//获取FAT数据
WinExec("debug <FAT.DAT> NUL");/*FAT.DAT内容
〃与原始FAT表进行对比
char*Message=CmpFat("FAT120.INT","SFAT120.INT"); 该程序在操作系统之前启动运行,读取分区记录(DPT)和引导
记录(MBR)后,通过底层的BIOS Intl3H将内存中读取的隐藏分区 的预定特征值OFH还原为G7H (对于NTFS分区)或OBH(对于FAT32 分区)格式的原标志值,从而使其在内存中转变成Winodws操作系统 可访问的虚拟分区。以上Int32H是BIOS提供的磁盘基本输入输出中 断调用,可以完成》兹盘(包括硬盘和软盘)的复位、读写、校验、定 位、诊断、格式化等功能,借助BI0SIntl3H实现创建虚拟分区的具 体过程如图2所示,分区虚拟的凄t据保存于系统内存当中,虚拟成功 后该内存地址中的数据将不允许进行覆盖和修改。
之后,操作系统启动,当用户在提示中选择要备份时,计算机读取当前文件分配表和文件目录表,并按预定名更改文件分配表和文件 目录表中的原常规文件名后,保存到系统备份程序中预先定义的路径 中去,形成易名备份文件分配表和文件目录表。
在计算机正常操作运行过程中,本实施例加载进入计算机系统内 核的上述程序动态监视操作指令,当发现有删除或修改文件,即有数 据交换时,在对该文件数据分配单元进行覆盖操作之前,先对当前文 件目录表和文件分配表进行相应处理,从而使相应数据基本单元实际 上不会被新的文件占用,从而使原有数据文件得到保留。以上过程分
为二种情况
一是删除文件,操作系统(0S)在常规情况下删除文件所进行的 实际操作是把当前文件目录表中对应该文件的表项第0个字节改为 E5H,表示此表项已经被删除,并将当前文件分配表中对应该文件目 录表被删除表项的各蔟表项清零,以释放自身空间。而本实施例计算 机所进行的操作则如图3所示,在发现拟删除文件时,通过将当前文 件分配表和文件分配表通过虚拟分区与备份文件目录表和文件分配 表逐项监视比较,找到拟删除文件对应的各表项,进而将当前文件分 配表中发生变化表的各蔟清零项以备份文件目录表中的对应项填充 还原,从而使存储相应数据文件的地址和空间实际上不会被新的文件 占用,即原有凄t据文件得到保留。
二是修改文件,操作系统(0S)在在常规情况下修改文件所进行 的实际操作是《,改后的文件将覆盖原有被修改的文件,对应数据空 间的数据发生了变化,如果数据修改不造成数据新开辟空间的话,那么反映在FAT和FDT中的地址并没有变化。而本实施例计算机所进行 的操作则如图4所示,在发现拟^"改文件时,通过将当前文件分配表 和文件分配表通过虚拟分区与备份文件目录表和文件分配表逐项监 视比较,找到拟修改文件对应的各表项(即数据修改的对应位置), 接着重新开辟空间,并把当前FAT和FDT表中的地址通过链接处理指 向新开辟空间的首项,把新开辟空间的末地址指向数据修改结束后的 下一个地址,即把当前文件分配表和文件分配表中的对应表项中与新 开辟的数据存储空间形成链接。这样在保证修改数据完整性和一致性 的同时,使存储原有数据文件的地址和空间实际上不会被新的修改文 件占用,即原有翁:据文件得到保留。简单的说,例如地址为5, 6, 7的 数据需要修改,在存在备份的前提下,实际操作把新修改的数据写入 15, 16, 17,在新的FAT中修改地址为在4的后面链接15, 16, 17,并 把17再链接到8。
这样,无论删除还是修改文件,对应原有文件的数据不会因覆盖 而消失,也不会无法寻址而丟失,文件分配表和文件目录表中对应原 有文件的簇号、地址等信息均得到保留,因此可以恢复。
当根据用户需要恢复时,计算机将通过虛拟分区,读取隐藏分区 中的备份文件分配表和文件目录表,覆盖当前文件分配表和文件目录 表,从而使系统得以还原。
此外,本实施例中的分区虚拟只要在主引导程序中安装现有分区 转换服务程序即可(例如微软的Dskprobe. exe工具),它将先于DOS 系统启动前启动,通过INT21和INT13H,将读入内存中的分区类型系统标志,自动更改为FAT32的分区类型系统标志,然后中断返回, 系统继续启动,如图5所示,程序先于D0S自动启动执行。
系统备份时,利用汇编语言的INT13和基本的数据交换功能对文
文件分配表和文件目录表非常小,备份过程只用几秒钟表就可备份完 毕。用户选择系统恢复时,将更改事先生成的一个文件中的标志项, 表示下次重启时进行系统恢复。待系统重新启动后,将最新备份的文 件分配表和文件目录表覆盖当前的文件分配表和文件目录表。 与现有技术相比,本实施例的方法具有以下特点
1. 通过转换分区格式,使得该分区及数据不能被操作系统或其它 基于文件系统的应用程序访问,因而比现有加密方法更安全。
2. 通过把隐藏分区转换成操作系统可识别的虚拟分区,从而不影 响用户4喿作,应用方{更。
3. 利用隐藏分区安装操作系统以及保存备份文件,使之不会被 病毒破坏。并且,在操作系统启动前,可以在隐藏分区处理操作系统
环境下不能删除的病毒文件。
4. 通过备份文件分配表和文件目录表实现系统备份,几乎不占 用系统资源,备份/恢复时间短,即具有理想的备份/恢复功能。
5. 备份文件采用不同于WIN文件定义标准的用户定义文件格式
(不带文件类型),具有双重保护的效果,形成双保险。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替 换或等效变换形成的技术方案,均落在本发明要求的保护范围。
权利要求
1. 一种基于计算机硬盘分区的数据备份和恢复方法,其特征在于包括以下步骤第一步、创建隐藏分区——将分区表中常规分区之一的标志值以预定特征值更改,将该分区转换为常规操作系统应用程序不能访问的隐藏分区;第二步、创建虚拟分区——将读入内存的隐藏分区预定特征值在内存中还原成原先的标志值,从而将隐藏分区在内存中转变成常规操作系统可访问的虚拟分区;第三步、备份关键文件——读取当前文件分配表和文件目录表,将其保存到预定路径指引的隐藏分区中,形成备份文件分配表和文件目录表;第四步、数据监视处理——动态监视计算机操作A、当监测到拟删除文件时,通过比照备份文件目录表及文件分配表的对应表项适时还原当前文件分配表的相关表项,使存储拟删除文件的数据基本单元实际上不会被新的其他文件占用;B、当监测到拟修改文件时,通过比照备份文件目录表及文件分配表的对应表项适时扩展当前文件分配表的相关链接单元表项,使存储拟修改文件的数据基本单元实际上不会被新的修改文件占用,修改文件存储到链接单元;第五步、恢复原有数据——通过虚拟分区,读取隐藏分区中的备份文件分配表和文件目录表,覆盖当前文件分配表和文件目录表。
2. 根据权利要求1所述基于计算机硬盘分区的数据备份和恢复 方法,其特征在于所述第三步读取当前文件分配表和文件目录表后, 以预定名更改其文件名,再保存到预定路径指引的隐藏分区中,形成 易名备份文件分配表和文件目录表。
3. 根据权利要求2所述基于计算机硬盘分区的数据备份和恢复 方法,其特征在于所述第一步之后,紧接着将操作系统安装在隐藏 分区中。
4. 根据权利要求3所述基于计算机硬盘分区的数据备份和恢复方法,其特征在于所述第二步的分区虚拟数据保存于系统内存当中, 虛拟成功后该内存地址中的数据不允许进行覆盖和修改。
5. 根据权利要求4所述基于计算机硬盘分区的数据备盼和恢复 方法,其特征在于所述第四步中,在发现拟删除文件时,通过将当 前文件分配表和文件分配表通过虚拟分区与备份文件目录表和文件 分配表逐项监视比较,找到拟删除文件对应的各表项,进而将当前文 件分配表中发生变化表的各簇清零项以备份文件目录表中的对应项 填充还原。
6. 根据权利要求5所述基于计算机硬盘分区的数据备份和恢复 方法,其特征在于所述第四步中,在发现拟修改文件时,通过将当 前文件分配表和文件分配表通过虚拟分区与备份文件目录表和文件 分配表逐项监视比较,找到拟修改文件对应的各表项,接着重新开辟 数据存储空间,并把当前文件分配表和文件分配表中的对应表项中与 新开辟的数据存储空间形成链接。
全文摘要
本发明涉及一种计算机数据备份和恢复方法,属于计算机安全技术领域。该方法包括创建隐藏分区、创建虚拟分区、备份关键文件、数据监视处理、恢复系统数据各步骤。由于常规操作系统应用程序不能访问隐藏分区,因此保存在其中的备份文件不会被破坏,而通过数据监视处理,由于实际上存储原有数据文件的数据分配单元不会被占用,原有数据文件得到妥善保存,因此使计算机的安全得到切实保证。并且,以上过程只备份文件分配表和文件目录表,而无需备份数据文件,因此几乎不占用计算机资源,备份和恢复迅速,对用户要求不高,便于推广应用。
文档编号G06F12/14GK101546295SQ20081002449
公开日2009年9月30日 申请日期2008年3月24日 优先权日2008年3月24日
发明者曹德亮, 贾银芳 申请人:上海梅山钢铁股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1