专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
InfoQ架构头条  ·  Safe C++提案能复制Rust的内存安全性吗? ·  5 天前  
51好读  ›  专栏  ›  运维帮

Bacula 开源备份解决方案

运维帮  · 公众号  · 运维  · 2016-12-12 20:09

正文


Bacula被誉为开源平台下最优秀的网络备份工具之一,功能之强大,完全可以和商用备份软件相媲美。Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案,可以对数据进行备份、恢复、以及完整性校验。


注:

  1. 本文部分图片取自Bacula官网:http://blog.bacula.org/

  2. 部分取自Bacula-Web:http://www.bacula-web.org/



功能简介


  • 支持完全备份,增量备份,差异备份。

  • 支持多种恢复方式

  • 支持多种文件系统下的备份恢复(ext3、ext2、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)

  • 支持各种备份介质

  • 支持多种操作系统

  • 强大的内部功能


以下是Bacula官方列举的与主流备份方案的技术对比参考:


注:表格中的中文翻译仅供参考;如需查看表格中相关注释,可以查看官方页面



支持的操作系统


  • 大多数Linux版本,包括Gentoo, Red Hat, Fedora, Mandriva, Debian,OpenSuSE, Ubuntu, Kubuntu,Centos等等

  • 不同版本的Solaris;

  • FreeBSD。磁带驱动器支持Bacula≥1.30for reeBSD≥5.0;

  • Windows。只支持客户端程序;

  • MacOS X/Darwin (安装支持包见http://fink.sourceforge.net/);

  • OpenBSD。只支持客户端程序;

  • Irix。只支持客户端程序。



下面是官方提供列表,供参考:


注:

  • “x”表示完全支持;

  • “”表示不完全支持,如果需要详细了解可查看官方文档。


组件和服务简介:

一个完整的bacula备份系统,由下面5个部分组成,如下:

  • Director Daemon:负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库文件中。其配置文件为bacula-dir.conf。


  • Storage Daemon(SD):主要负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。


  • File Daemon(FD):安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。


  • Console:管理控制台。可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作。


  • Monitor:进程监控端。


工作流程:

  • 通过console连接到Director端,备份恢复操作开始。


  • Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。


  • 客户端FD负责验证Director的操作许可,如果验证通过,则允许连接到存储端SD


  • 客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。




Bacula各组件中的字段简介


各配置文件之间主要对象的关系。


注:图中使用箭头连接主控端配置文件的相关项与其它配置文件的相关项,所连接的相关项的值必须是相同的。


  1. 主控端配置文件的 Director{}项

    Name 值与控制台配置文件(bconsole.conf,下同)的 Director{}项、存储端配置文件的 Director{}项及客户端配置文件的 Director{}项的 Name 值相同;Password 值与控制台配置文件的 Director{}项的 Password 值相同。


  2. 主控端配置文件的 Storage{}项

    Device 值与存储端配置文件的 Device{}项的 Name 值相同;MediaType 值与存储端配置文件的 Device{}项的 MediaType 值相同;Password 值与存储端配置文件的 Director{}项的 Password 值相同。


  3. 主控端配置文件的 Client{}项

    Password 值与客户端配置文件的 Director{}项的 Password 值相同。



Bacula实例


注:略去详细安装过程,感兴趣可google搜索下,此处将已经搭建完成的备份系统中关键配置贴出来


//安装完成之后,会有如下几个主要配置文件:


[root@director bacula]# ll

total 64

-rw-r----- 1 root bacula 40669 Oct 12 16:58  bacula-dir.conf

-rw-r----- 1 root root    1671 Aug 19 14:44 bacula-fd.conf

-rw-r----- 1 root root    9241 Oct   8 13:53 bacula-sd.conf

-rw-r----- 1 root root     349 Aug 19 14:42 bconsole.conf

-rw-r----- 1 root bacula   256 May 16   2015 query.sql


bacula-dir.conf

Director字段定义Bacula的全局配置

  1. bacula-dir服务端口号

  2. 定义一次能处理的最大并发数

  3. Console Password密码



Schedule字段定义备份策略:

  1. 第一周的周日晚23:05分进行完全备份

  2. 第2~5周的周日晚23:05进行差异备份

  3. 所有周一至周六晚23:05分进行增量备份

  4. 定义一个WeeklyCycleAfterBackup备份策略




JobDefs字段定义执行任务的一些默认属性,后面定义的job可以继承,但是如果有冲突以job中为准。



Storage字段用来定义将客户端的数据备份到哪个存储设备上。



定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、是否覆盖过期的备份数据、是否自动清除过期备份等。


  1. Recycle表示重复使用

  2. AutoPrune表示自动清除过期备份文件

  3. Volume Retention表示备份文件保留的时间

  4. Maximum Volume Bytes参数表示一个卷的大小

  5. Maximum Volumes表示卷最多400个(每个卷是20G,这个pool可提供最多8TB可用空间,超过会导致备份任务等待)

  6. Maximum Volume Jobs表示每个卷支持的备份任务数量



FileSet字段定义一个名为CentOS-7-APP的备份资源,指定客户端需要备份哪些数据,排除哪些数据等,可以指定多个FileSet。

  1. 提供gzip压缩功能(本例中未使用压缩功能)

  2. 提供MD5,SHA1校验功能



Job字段定义一个备份任务:

  1. 指定备份的客户端主机

  2. 定义备份的级别(Level的取值可为Full(完全备份),Incremental为增量备份,Differential差异备份,如果第一次没做完全备份,则需要先进行完全备份再执行Incremental)



Client字段用来定义备份哪个客户端的FD数据

  1. Address:定义客户端,可以是IP地址也可以是FQDN(有A记录)

  2. FDPort:与客户端FD通信的端口号

  3. Password:Director与客户端FD的验证密码,这个密码必须与客户端FD配置文件bacula-fd.conf中的密码一致




bacula-sd.conf

  1. 定义存储

  2. 定义Device

Archive Device用来定义备份的介质(可以是CD,DVD,TAP等),这里是指定到目录(文件系统)


注:SD可以是一台单独的服务器,也可以和Director在一台机器上


bacula-fd.conf

  1. 定义一个控制StorageDaemon的Director

  2. director-dir必须要与Director端配置文件bacula-dir.conf中的Director逻辑字段名称一致(password必须要和Storage逻辑字段一致)

  3. director-mon必须要与Director端配置文件bacula-dir.conf中的Console逻辑字段名称一致(password必须要一致)


注:需要备份的客户端要先安装bacula客户端软件(支持Win)



Bacula-Web


主页面



存储池



Job状态



app1-fd客户端过去两周的备份情况



备份报告



备份数据恢复

恢复客户端app1(JobID为1271)



找到对应的job ID




恢复后的数据




本文作者:高瑞(点融黑帮),目前就职于点融网IT 部门,担任系统运维工程师,爱好篮球运动。



快乐分享,快乐生活

商务合作,请加微信yunweibang555