基于Linux的Bacula 备份系统的研究

2011-06-09 08:06许宏年孙洪波
关键词:服务器端备份客户端

许宏年,孙洪波,孙 琰

(1.长春工程学院现代教育技术中心;3.空军航空大学,长春130012)

0 引言

随着高校信息化的普及与发展,越来越多的部门都开始重视网站的建设。对于这些部门的维护管理人员来说,他们工作的重心除了正常的维护以外,同时信息安全与存储技术也越来越引起各部门人员的注意,一个良好的备份系统存储方案是一个部门网站生存的关键。目前我们大多使用软件tar、dump等程序备份数据,但是这种备份方式没有控制中心,也没有日志,出错不方便查找,管理起来也相对麻烦。

基于此,本文设计并实现了一种基于Linux的开源备份系统Bacula,该系统有如下特点:

(1)确保文件的属性被完善保存和恢复,因为每一台计算机都安装有一个客户端;

(2)Bacula是一个开源软件,速度快,安装配置相对简单;

(3)模块化的设计使Bacula有很强的扩展性;

(4)内置任务调度程序,并可以设置任务优先级;

(5)数据操作更安全。每个后台程序之间使用CRAM-MD5口令验证,文件数据可以减刑MD5或者SHA1签名验证;

(6)高级功能。备份数据至CD/DVD介质及磁带机,使用Bacula配合建立Linux容灾系统。

1 体系结构

Bacula采用模块化设计,核心由3个模块组成。Director模块(Bacula-dir.conf):用于指挥整个系统运行,包括job FileSet schedule等模块配置工作,同时调用另外2个模块工作。另一个是Storage Daemon模块(Bacula-sd.conf):存储端,负责把网络中传来的数据备份到指定的地方,恢复的时候负责把数据传出去。最后一个是File Daemon模块(Bacula-fd.conf):备份时把文件传出,恢复时接受数据并恢复。

通过理论分析可知,可以把任意N台客户机的资料,备份到任意N台存储的机器上。同时在director上就可以知道所有的log(包括什么备份成功了,什么备份失败了,什么备份有错误了)会集中到指定的地方,让管理工作更简单一点。同时要考虑的是,单机备份比较容易,网络备份就需要考虑各个Linux主机的时间差异。图1是系统的体系结构图。

图1 系统体系结构

2 系统的实现

2.1 系统环境

系统平台:服务器server:操作系统为linuxas4最小化安装,IP为192.172.1.1,角色为备份服务器兼存储服务器,主机为client,IP是192.172.1.2,为需要备份的主机。

2.2 Bacula服务器安装

2.2.1 Bacula在服务器端的安装

2.2.2 在服务器端创建mysql脚本

2.2.3 Bacula在服务器端上的配置

在配置服务器端文件时,首先要明白Job的概念。Job是一个模块化的设计,要注意一个任务(Job)在执行过程中,需要调用很多其他的参数设置如:Client、FileSet、Schedule等,从而使得任务配置完成。为什么这些配置不全写在Job配置文件中呢,因为如果这么多的参数全部写在Job里,那么就会导致Job的参数设计非常复杂,查找问题的时候也不方便,解决这种问题的办法就是模块化的设计,会使设计和运行都更快一些。

下面简单用一句话说明一下一个Job的执行过程:在建立一个备份任务(job)时,首先需要选择一台备份的计算机(Client),确定需要备份的文件(FileSet)及备份时间周期和备份类型(Schedule),最后选择备份到哪里(Storage),通过对这样类似的十几个设置值进行设置,就完成了一个备份任务(job)。

图2 一个完整JOB的关系图

下面开始在Bacula-dir.conf设计一个完整的job,名称为backupjob1,服务器IP为192.172.1.1,备份的Client客户端的IP为192.172.1.2,为了方便设置,在配置文件里大部分的名称都统一为backupdb。

(1)关于bacula-dir.conf的配置内容

下面我们定义了一个备份的名字(Name)为backupjob1备份的Job,其中作业的类型(Type)为backup(备份),文件集(FileSet)为backupdb,客户端(Client)为backupdb,数据存储的位置(Storage)backupdb,作业的运行计划(Schedule)为backupdb,在这里设置的所有配置名字,都会在下面的模块中分别设置。

FileSet定义了备份或者排除哪些文件。FileSet的Name必须与相关Job的名字相同;Include包括需要备份的文件和目录,特别注意路径只能是绝对路径,每个FileSet可以有多个Include;Options定义了一个Include的选项,包括从中过滤哪些文件、压缩、签名等。

Client为每一台机器定义一个Client资源。通常Client需要设定一个Name;Address是计算机的IP地址;Password是设定与Director建立链接时使用的密码;File Retention设定了文件信息在数据库的保存时间,如果AutoPrune为yes,bacula会自动清理数据,但要注意的是并不会删除备份数据;Job Retention定义了作业信息在数据库保留的时间。

Schedule资源定义了Job的运行计划,特别注意如果Job里没有引用Schedule,那么只能手动运行。每个Schedule可以有多个运行计划,每个运行计划都包括Level、Date-time-specification等,其中时间的配置比较复杂。

(2)关于bacula-sd.conf配置

bacula-sd.conf的配置相对内容需要一些Storage定义了备份的名字、Director定义所要登陆的Director名字和密码、Device定义存储设备的特性。

2.3 Bacula在client上的安装和配置

2.3.1 安装bacula

2.3.2 关于bacula-fd.conf的配置

2.3.3 启动bacula的fd进程

#bacula-ctl-fd start

到此bacula的服务器在客户端的配置全部完成。

2.4 备份系统的实现

在服务器Bacula目录下找执行如下操作:

可以看到有一个大小10M的文件,证明备份成功!

3 结语

本文设计并实现了一种基于Linux的开源软件Bacula备份系统,通过对服务器和客户端的配置,实现了对远程机器的备份和恢复工作。该系统同时也支持在Windows系统下使用,可直接架构于服务器上,为部门的数据安全提供了一个完整的备份方案。

[1]孙东奇,王秀梅.用Rsync实现Linux文件系统备份[J].教育信息化,2006,2:35-36.

[2]于勇雷,李涛,赵奎等.一种基于Linux的网络备份系统的设计与实现[J].计算机应用研究,2005(11):166-168.

[3]张兴发,蒋朝根.分布式Linux下数据库文件自动备份与恢复[J].计算机时代,2006(1):16-17.

猜你喜欢
服务器端备份客户端
“备份”25年:邓清明圆梦
Linux环境下基于Socket的数据传输软件设计
创建vSphere 备份任务
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
旧瓶装新酒天宫二号从备份变实验室
出版原图数据库迁移与备份恢复