1. Bacula Server端安装配置
1.1. Bacula Server端安装
1.1.1. 安装bacula依赖包
For Centos6:
yum install -y mysql mysql-server mysql-devel gcc gcc-c++ mysql-devel libacl libacl-devel
For Centos7:
yum install -y mariadb mariadb-server mysql-devel gcc gcc-c++ mysql-devel libacl libacl-devel
1.1.2. 安装bacula服务端
tar zxf bacula-9.x.tar.gz
cd bacula-9.x
CFLAGS="-g -Wall" ./configure \
--sbindir=/usr/local/bacula/bin \
--sysconfdir=/usr/local/bacula/etc \
--with-pid-dir=/usr/local/bacula/working \
--with-subsys-dir=/usr/local/bacula/working \
--with-working-dir=/usr/local/bacula/working \
--enable-smartalloc \
--with-mysql \
--enable-readline \
--with-smtp-host=mail.163.com
--docdir configure option
# 安装bacula
make && make install && make install-autostart
1.1.3. 创建并授权数据库
For Centos6:
service mysqld start
chkconfig mysqld on
For Centos7:
systemctl start mariadb
systemctl enable mariadb
导入数据库配置(目前不支持MySQL8以上版本)
cd bacula-9.2.2/src/cats
# 赋予权限
./grant_mysql_privileges -p
# 创建数据库
./create_mysql_database -p
# 创建相关表
./make_mysql_tables -p
1.2. Bacula配置及启动
1.2.1. 修改sd address
vi /usr/local/bacula/etc/bacula-dir.conf
# 7.x的为Storage,9.x的为Autochanger
Autochanger {
Name = File1
Address = serverip # N.B. Use a fully qualified name here
# 不能使用localhost,写主机名(可以解析到)或IP地址
Autochanger {
Name = File2
Address = serverip # N.B. Use a fully qualified name here
1.2.2. 修改存储目录(根据实际环境修改)
vi /usr/local/bacula/etc/bacula-sd.conf
# /data 目录为存储备份的目录
Device {
Name = FileChgr1-Dev1
Media Type = File1
Archive Device = /data
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 5
}
Device {
Name = FileChgr1-Dev2
Media Type = File1
Archive Device = /data
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 5
}
1.2.3. 启动bacula
cd /usr/local/bacula/bin/
# 查看bacula状态
./bacula status
bacula-sd is stopped
bacula-fd is stopped
bacula-dir is stopped
# 启动bacula
./bacula start
Starting the Bacula Storage daemon
Starting the Bacula File daemon
Starting the Bacula Director daemon
bacula日志位于/opt/bacula/log/bacula.log
# 日志路径由bacula-dir.conf配置
# 此配置是在bacula-dir.conf中定义的“append = "/opt/bacula/log/bacula.log" = all, !skipped”
# centos6下只有出现错误时才会产生bacula.log,默认无bacula.log文件。
# centos7下安装完成后会自动生成bacula.log
1.3. bacula配置文件说明
bacula服务端有如下配置文件:
bconsole.conf:bconsole的配置文件,定义可连接的director连接信息。即bconsole可以管理那些director;
bacula-dir.conf:director的配置文件,是bacula最主要的配置文件,定义了备份相关的所有配置;
bacula-fd.conf:为客户端的配置文件,定义了客户端的密码、客户端名称等配置;
bacula-sd.conf:为存储配置文件,定义了备份存储位置。
其中关系如下图所示:
1.3.1. bconsole.conf 控制台配置文件
配置详解
vi bconsole.conf
Director {
Name = server-dir
DIRport = 9101
address = localhost
Password = "pJzzuOS5FoLWTFZkbhlY3CCw8OzmJ1G9t4GhQCWfHSik"
# 控制台密码,与后面的dir等配置文件相关联
}
1.3.2. bacula-dir.conf Director配置文件
配置详解
vi bacula-dir.conf
# 定义Director
Director { # define myself
Name = server-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/usr/local/bacula/bin/query.sql"
WorkingDirectory = "/root/bacula/bin/working"
PidDirectory = "/usr/local/bacula/bin/working"
Maximum Concurrent Jobs = 20
Password = "pJzzuOS5FoLWTFZkbhlY3CCw8OzmJ1G9t4GhQCWfHSik"
# bconsole通过该密码连接director
Messages = Daemon
}
# Job定义备份任务
JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = server-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = File1
Messages = Standard
Pool = File
SpoolAttributes = yes
Priority = 10
Write Bootstrap = "/root/bacula/bin/working/%c.bsr"
}
# Fileset定义需要备份的文件
# For linux
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /usr/local/bacula/bin
}
Exclude {
File = /root/bacula/bin/working
File = /tmp
File = /proc
File = /tmp
File = /sys
File = /.journal
File = /.fsck
}
}
# For windows
FileSet {
Name = "FileSet2"
Include {
Options {
signature = MD5
Compression = GZIP
}
File = "C:/myfiles"
}
}
# Autochanger(storage)定义存储相关配置
Autochanger {
Name = File2
# Do not use "localhost" here
Address = 192.168.222.202 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "NboyFMqm5MtBxD4+hKC+9XpDN8/1l587CslajTiCVu3i"
# 存储端密码,要和bacula-sd.conf中Director字段密码一样
Device = FileChgr1
# 指定数据备份的存储介质,必须与存储端的bacula-sd.conf配置文#件中的“Device” 逻辑段的“Name”项名称相同
Device = FileChgr2
Media Type = File2
# 指定存储介质的类别,必须与存储端SD的bacula-sd.conf配置文#件中的“Device” 逻辑段的“Media Type”项名称相同
Autochanger = File2 # point to ourself
Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time
}
# Pool定义备份保存策略
Pool {
Name = File
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes 重复使用
AutoPrune = yes # Prune expired volumes表示自动清除过期备份文件
Volume Retention = 365 days # one year 指定备份文件保留的时间
Maximum Volume Bytes = 50G # Limit Volume size to something reasonable最大卷的大小(默认为Bytes,使用M或G)
Maximum Volumes = 100 # Limit number of Volumes in Pool设置最多保存多少个备份文件
Label Format = "Vol-" # Auto label自动命名创建的备份文件(Vol-0001开始的数字,后面的数字为jobid的数字)(Vol,可以自定义(File-、 Sky-......))
Maximum Volume Jobs = 1 # 每个卷文件最大支持一个Job,即每个Job产生一个文件
Recycle Current Volume = yes # 表示可以使用最近过期的备份文件来存储新备份
# 修改Pool信息之后,重启bacula,原volume未满则需要等volum满了之后新的策略,或者删除现有的volume新的任务会使用新策略生成新volume
}
1.3.3. bacula-sd.conf 存储配置文件
配置详解
vi bacula-sd.conf
Storage { # definition of myself
Name = server-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/root/bacula/bin/working"
Pid Directory = "/usr/local/bacula/bin/working"
Maximum Concurrent Jobs = 20
}
Director {
Name = server-dir
Password = "P06iXvJqaxs+mowRhTyBrRSfgTSg3O1oYqYa3rKr1Cw1"
# 定义存储密码,director需要通过此密码连接存储
}
#
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
Director {
Name = server-mon
Password = "FYpq4yyI1y562EMS35bA0J0QC0M2L3t5cZObxT3XQxgxppTn"
# 配置 tray-monitor监控密码,详见《Tray Monitor服务》。
Monitor = yes
}
# 存储设备配置
Autochanger {
Name = FileChgr1
Device = FileChgr1-Dev1, FileChgr1-Dev2
Changer Command = ""
Changer Device = /dev/null
}
Device {
Name = FileChgr1-Dev1
# 定义Device的名称,这个名称在Director端配置文件
Media Type = File1
# 指定存储介质的类型,File表示使用文件系统存储
Archive Device = /data
# Archive Device用来指定备份存储的介质,可以是cd、dvd、tap等,这里是将备份的文件保存的/data目录下
LabelMedia = yes;
# lets Bacula label unlabeled media通过Label命令来建立卷文件
Random Access = Yes;
#设置是否采用随机访问存储介质
AutomaticMount = yes;
# when device opened, read it表示当存储设备打开时是否自动使用它
RemovableMedia = no;
#是否支持可移动的设备,如tap或cd
AlwaysOpen = no;
#是否确保tap设备总是可用
Maximum Concurrent Jobs = 5
}
Device {
Name = FileChgr1-Dev2
Media Type = File1
Archive Device = /data
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
1.3.4. bacula-fd.conf 客户端配置文件
客户端安装方式可参考《Bacula Client端安装》。
配置说明:
vi bacula-fd.conf
Director {
Name = server-dir
# 此Name为Director的名称,即server端名称而非client的名称。
Password = "3ydivk+gipxRjqbNCdwUeNi8ZWhGh3NXyvHXPZLAgMZ1"
# 定义client的密码,director需要通过此密码连接客户端
}
Director {
Name = server-mon
# 此Name为tray-monitor的名称,即monitor的名称而非client的名称。
Password = "w1yPbENlbfCMNrsD2gMarzBfLb+I1+kRN/UhUM3s5+VB"
# 配置 tray-monitor监控密码,详见《Tray Monitor服务》。。
Monitor = yes
}
重启服务
./bacula restart
./bacula status