一、Bacula简介
Bacula是一款开源的跨平台企业级备份软件。它采用C/S架构,可以实现对数据备份、恢复及校验;支持完全备份、增量备份和差异备份;支持多种操作系统和文件系统(例如windows和linux系统);支持定时备份,无需人工干预;支持终端命令控制,更加灵活;支持正则表达式,可以对备份文件进行更严格的匹配;支持MD5和SHA1签名校验;支持压缩备份和断点续传功能。
1.1Bacula的组成
Bacula主要由以下六部份组成:
BaculaDirector:
全局设置。负责备份的验证、运行、计划任务、备份和恢复的各种定义和执行操作。配置文件是bacula-dir.conf。以下简称主控端。
BaculaConsole:
终端管理控制台。通过该控制台连接BaculaDirector查看或执行系统的备份、恢复操作。配置文件是bconsole.conf。以下简称console端。
BaculaFile:
需要备份的机器。安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。以下简称客户端。
BaculaStorage:
备份文件的存放介质。负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。以下简称介质端。
BaculaMonitor:
备份进程的监控。显示进程的备份或恢复时的状态信息。以下简称监控端。
Catalog:备份信息元数据。用于记录系统运行的状态信息。
1.2Bacula的恢复流程
通过上图可知,系统的恢复流程如下:
1、通过Console连接到Director端,开始恢复操作。
2、Director端从自己的Catalog中取出备份的记录信息,同时对存储端SD和客户端FD的任务进行协调。
3、客户端FD验证Director的操作许可,验证通过后连接到存储端SD。
4、客户端FD根据Director发出的请求去连接SD,将FD端的数据按恢复要求重新存储到SD端或FD端。
二、Bacula安装
2.1系统环境
CentOS7最小化安装
主机名IP地址系统版本角色bacula-test192.168.17.100Centos7DIR、SD、Console192.168.17.98Windows10
FD
2.2系统更新
wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumcleanyummakecacheyumupdate
2.3禁用selinux
vim/etc/selinux/config
2.4下载安装包
wgethttp://www.bacula.com.br/wp-content/uploads/2016/01/bacula-7.4.0.tar.gz-P/roottarzxvfbacula-7.4.0.tar.gz
2.5安装相关软件包
yuminstallgcc-c++readline-develzlib-devellzo-devellibacl-devel\mt-stmtxpostfixlibssl-devmariadb-develmariadb-server
2.6编译安装
cdbacula./configure--disable-conio--bindir=/usr/bin--sbindir=/usr/sbin\--with-scriptdir=/usr/libexec/bacula/\--with-working-dir=/var/spool/bacula/\--with-logdir=/var/log--enable-smartalloc--with-mysql\--with-hostname=192.168.17.100--sysconfdir=/etc/bacula--with-systemdmakeinstallmakeinstall-autostart
完成后检查相关文件和目录是否存在。可以参考编译的参数查找对应的文件和目录,如下图所示。
2.7MYSQL数据库配置
数据库MariaDB通过yum的方式安装,版本是5.5.47,以下的数据库设置针对该版本,其它版本的数据库请对照修改。
vim/etc/my.cnf
mysql_secure_installationmysql-uroot-pcreatedatabasebacula;setpasswordforbacula@'%'=password('password');setpasswordforbacula@'localhost'=password('password');grantallprivilegesonbacula.*to‘bacula’@’%’;grantallprivilegesonbacula.*to‘bacula’@’localhost’;selectuser,host,passwordfrommysql.user;
/usr/libexec/bacula/grant_mysql_privileges-p/usr/libexec/bacula/create_mysql_database-p/usr/libexec/bacula/make_mysql_tables-pusebacula;showtables;
山不厌高,水不厌深。