一、Bacula简介
Bacula是一款开源的跨平台企业级备份软件。它采用C/S架构,可以实现对数据备份、恢复及校验;支持完全备份、增量备份和差异备份;支持多种操作系统和文件系统(例如windows和linux系统);支持定时备份,无需人工干预;支持终端命令控制,更加灵活;支持正则表达式,可以对备份文件进行更严格的匹配;支持MD5和SHA1签名校验;支持压缩备份和断点续传功能。
1.1 Bacula的组成
Bacula主要由以下六部份组成:
Bacula Director:
全局设置。负责备份的验证、运行、计划任务、备份和恢复的各种定义和执行操作。配置文件是bacula-dir.conf。以下简称主控端。
Bacula Console:
终端管理控制台。通过该控制台连接Bacula Director查看或执行系统的备份、恢复操作。配置文件是bconsole.conf。以下简称console端。
Bacula File:
需要备份的机器。安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。以下简称客户端。
Bacula Storage:
备份文件的存放介质。负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。以下简称介质端。
Bacula Monitor:
备份进程的监控。显示进程的备份或恢复时的状态信息。以下简称监控端。
Catalog:备份信息元数据。用于记录系统运行的状态信息。
1.2 Bacula的恢复流程
通过上图可知,系统的恢复流程如下:
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、Console
192.168.17.98Windows10FD
2.2 系统更新wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean
yum makecache
yum update
2.3 禁用selinuxvim /etc/selinux/config
2.4 下载安装包wget http://www.bacula.com.br/wp-content/uploads/2016/01/bacula-7.4.0.tar.gz -P /root
tar zxvf bacula-7.4.0.tar.gz
2.5 安装相关软件包yum install gcc-c++ readline-devel zlib-devel lzo-devel libacl-devel \
mt-st mtx postfix libssl-dev mariadb-devel mariadb-server
2.6 编译安装cd bacula
./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-systemd
make
make install
make install-autostart
完成后检查相关文件和目录是否存在。可以参考编译的参数查找对应的文件和目录,如下图所示。
2.7 MYSQL数据库配置
数据库MariaDB通过yum的方式安装,版本是5.5.47,以下的数据库设置针对该版本,其它版本的数据库请对照修改。vim /etc/my.cnf
mysql_secure_installation
mysql -u root -p
create database bacula;
set password for bacula@'%'=password('password');
set password for bacula@'localhost'=password('password');
grant all privileges on bacula.* to ‘bacula’@’%’;
grant all privileges on bacula.* to ‘bacula’@’localhost’;
select user,host,password from mysql.user;
/usr/libexec/bacula/grant_mysql_privileges -p
/usr/libexec/bacula/create_mysql_database -p
/usr/libexec/bacula/make_mysql_tables -p
use bacula;
show tables;