在信息技术与数据管理领域,
备份指将文件系统或数据库系统中的数据加以复制;一旦发生灾难或错误操作时,得以方便而及时地恢复系统的有效数据和正常运作。备份程序是指系统中对数据进行备份的程序。备份程序是系统中一个基本程序。例如,在数据库系统中,为了保证数据安全,会经常使用备份程序对数据进行备份。
简介
备份程序是指系统中对数据进行备份的程序。在系统运行会遇到很多无法预测的情况,如果不使用备份程序备份数据,可能会带来非常严重的后果,为系统的安全,定期使用备份程序进行备份是有必要的,应该是系统基本功能之一。对于不同数据,备份程序在功能可能会有所差别。
备份
备份:为
应付文件、数据丢失或
损坏等可能出现的意外情况,将
电子计算机存储设备中的数据复制到
磁带等大容量存储设备中。最好将重要数据制作三个,或三个以上的备份,并且放置在不同的场所,以利日后回存之用。
备份种类
全部备份(Full Backup),即把
硬盘或
数据库内的所有
文件、
文件夹或
数据作一次性的
复制。
增量备份(Incremental Backup),指对上一次全部备份或增量备份后更新的数据进行备份。
差异备份(Differential backup) 差异备份提供运行完整备份后变更的文件的备份
选择式备份,对系统的一部分进行备份。
冷备份:系统处于停机或
维护状态下的备份。这种情况下,备份的数据与系统中此时段的数据完全一致。
热备份:系统处于正常运转状态下的备份。这种情况下,由于系统中的数据可能随时在更新,备份的数据相对于系统的真实数据可有一定
滞后。
各种数据处理的技术
在实施备份的过程中,可以对数据进行各种处理,这些不同的处理方式可以改善备份速度,恢复速度,增加数据安全性,提升存储介质的利用率。
数据压缩技术(Compression):通过各种机制来降低备份数据的大小,以便占用更少的存储空间,压缩的方法在磁带存储中尤为常见。
数据重复删除技术(De-duplication):当多个相似系统的数据要备份到同一台存储设备上时,需要重复备份数据,这会产生大量的冗余。例如,有20个Windows工作站要备份到同一台存储设备上,备份数据就可以共享系统文件。存储设备上只需要一份系统文件,就可以用来恢复多个工作站。这项技术可以应用在文件级,也可以应用在未经处理的数据块级,通过避免冗余数据的重复复制,可以大大节省存储设备的存储空间。重复数据删除技术可以发生在服务器端,在数据备份到存储之前执行,这种方法可以在节省存储空间的同时节省备份数据的带宽需求,这种方式的重复数据删除叫做在线即时数据处理(inline);重复数据删除技术也可以发生在存储设备端,称之为后台重复数据删除技术。
数据复制技术(Duplication):在备份的过程中,数据有可能需要额外备份到第二组存储设备;通过将备份数据复制,可以调整备份镜像来优化恢复速度,而且可以将第二份备份数据存放在不同的备份地点,或不同的备份介质上。
数据加密技术(Encryption):对于大容量的可移动的备份存储介质,例如磁带,会面临丢失和被盗的风险。通过对数据加密可以降低上述风险,但是也带来了另外的问题:首先,加密会占用大量的CPU进程,从而降低了备份速度;其次,数据被加密之后,就不能有效地压缩,例如某些
磁带驱动器的
数据压缩技术无法实施。基于上述原因,以及冗余数据导致解密分析供给更加容易,很多加密技术都在实施之前进行压缩;最后,加密技术要成功起作用,必须配合整体的安全策略通盘考虑。
数据缓冲技术(Staging):利用数据缓冲技术,备份数据在复制到磁带之前,会先复制到缓冲磁盘,这个操作称之为D2D2T,
磁盘到磁盘到磁带。数据缓冲技术(虚拟带库技术)在基于网络的备份系统中尤为重要,因为D2D2T技术可以缓解系统对于备份带宽的需求。如果备份系统中需要执行其他的数据操作,缓冲磁盘还可以起到数据中心的作用。
基于.N ET 的文件备份程序设计
在日常的计算机使用过程中, 一定会生成很多文件,例如大量的 Word 、Excel 、下载的网页文件、 图片文件等, 如果不对这些文件进行备份, 一旦磁盘损坏,会造成不可估量的损失。而一般的备份方法通过Windows 操作系统提供的复制与粘贴的方式进行备份,但这有许多不足之处:首先,每一次备份,不管文件有没有修改过,都需要重新进行一次复制与粘贴,这样每次备份所需花费的时间一定不小于第一次的备份所花费的时间,即要花很长的时间,其次,由于大量的磁盘的读写操作会缩短了磁盘的使用寿命;再次,利用复制与粘贴这种方法,很容易会遗漏源盘上 uWSMEWORK 2.0 DI 隐藏的子文件夹和文件;最后最可怕的是,如果目标盘上的文件经过修改后比源盘上对应的文件要新的话,由于遭到源盘上文件的覆盖,会造成数据的丢失。本程序的设计, 利用了 .NETFramework 中提供的有关文件及文件夹管理的类,解决了以上这些问题。
设计原理
对于一个源文件,首先判断目标盘上是否存在该文件,如果不存在,则直接复制过去,否则分别获取源文件与目标文件的修改日期时间的这个属性, 通过进行对比新旧, 决定是否进行备份。如果源文件的修改日期时间比目标文件的修改日期时间新,则覆盖目标文件,否则不复制。对于源盘上的文件夹,判定目标盘对应的路径下是否存在,如果不存在, 则在目标上新建该文件夹。
文件与文件夹处理
根据源文件夹下文件的类型,对文件与文件夹进行分别处理。
文件处理
( 1 ) 针对一个源文件夹,创建一个 DirectoryInfo 类的对象。
( 2 ) 通过 DirectoryInfo 的 GetFiles 方法,获取源文件夹下所有的文件对象序列, 保存到一个数组中。
( 3 ) 通过 FOR EACH 循环语句分别获取数组中的每个文件对象。
( 4 ) 针对一个文件对象,查找备份盘上对应的的路径下是否存在该文件 (通过 FILE 类的 EXIST 方法),如果不存在,则直接复制过去(通过 FILE 类的 COPY 方法);如果存在,则通过FILEINFO 类创建该文件对象,然后比较源文件与目标文件的修改日期时间 (通过文件对象 LASTWRITETIME 这个属性),如果源文件对象的修改日期时间比目标文件对象的修改日期时间要新,即源文件的 LASTWRTETIME 大于目标文件的 LASTWRITETIME ,则直接复制过去,否则跳过,处理下一个文件对象。
文件夹处理
( 1 ) 通过 DirectoryInfo 的 GetDirectories 方法,获取源文件夹下所有的子文件夹对象序列, 保存到下一个数组中。
( 2 ) 通过 FOR EACH 循环语句分别获取每个子文件夹对象。
( 3 ) 针对一个子文件对象, 查找备份盘上相同的父文件夹是否存在相同名称的子文件夹 (通过 Directory 的 EXIST 方法), 如果存在,则对该子文件夹的文件按前面的处理方式进行, 如果不存在,则首先在在目标盘对应的父文件夹下创建子文件夹(通过 Directory.CreateDirectory 的方法),再按文件的处理方式进行备份。
算法流程图
文件备份的算法流程,如图1所示。
文件夹备份的算法流程,如图2所示。
关键技术
关键类及其属性、 方法
( 1 ) System.IO.File 类及其方法: Exists 、 Copy 、 Delete 。
( 2 ) System.IO.FileInfo 类及其属性: LastWriteTime 。
( 3 ) System.IO.Directory 类及其方法: Exists 、 CreateDirectory 。
( 4 ) System.IO.DirectoryInfo 类 及 其 方 法 :GetDirectories 、GetFiles 。
递归技术
建立一个程序过程,把目标文件夹作为该过程的参数,该过程对文件夹下的文件进行直接处理;对子文件夹,首先判定在目标盘上是否存在,如果不存在,先在目标盘上创建该文件夹,然后递归调用过程自身;回归的条件, 取完文件夹下子文件夹后进行回归。有关代码如下: