最近在学习《企业级服务器导论》这门课,老师在讲备份的内容的时候,留了一个大作业:让自己搭建一个bacula备份环境,要求FD端要和其他的服务端(director、sd端)等分开。
也许是临近放假,或者是对这个不感兴趣,就是不想做啊,看来离大牛还是有一段距离啊。
然后就是在网上找教程了,让人心烦的是不同的教程里讲的内容要么是有的矛盾,要么是配置文件格式乱的根本看不下去,有的教程里竟然还少了客户端的配置,不知道写教程的人是当时是怎么运行起来的!!!!对于有矛盾的地方,只能使用笨方法一个个试了,不过最后还是弄出来了。在此做个记录,防止忘记。
注:
- 这里参考的一些教程会在最后的参考文献中列出,如果作者认为侵权(教程也可能是别的网站二次转载,这无法控制)可以留言,会删除。
- 这里只讨论如何搭建环境,bacula的介绍啥的google吧。
- 这里搭建的环境是:Director端、SD端在同一台机器上,FD端在另一台机器上(所以Director端无法备份自己,如果要备份自己的数据,要先修改bacula-fd.conf,修改方法同FD端)。
1. 准备前提环境
在做安装之前确认要对该机器拥有root权限,并且确认你安装好的系统上已经安装如下软件包再继续:
- Mysql(数据库使用Mysql,也可食用其它数据库)
- GCC编译器
没有的话需要先安装:
#这里使用yum命令完成安装。
[root@server ~]# rpm -qa gcc gcc-c++ mysql mysql-devel mysql-server #验证一下
[root@server ~]# yum install gcc gcc-c++ #安装gcc gcc-c++
[root@server ~]# yum install mysql mysql-devel mysql-server #安装mysql
2. Bacula安装
注:此部分包含FD端的安装与服务器端的安装两个部分。
1. 下载源程序包
[chenyi@server ~]$ su #切换为root用户
#建立存储下载文件的目录。
[root@server ~]# mkdir /opt/bacula
[root@server ~]# cd /opt/bacula
[root@server bacula]# wget http://....
2. 编译并安装Bacula
#*为版本号,这里省略
[root@server bacula]# tar zxf bacula-*.tar.gz
[root@server bacula]# cd bacula-*
#设置环境变量,将$HOME设置为/usr/local
[root@server bacula-*]# HOME=/usr/local/
[root@server bacula-*]# CFLAGS="-g -Wall"
运行Bacula配置脚本,configure参数详细的说明可查看官方文档。
服务器端与FD端分别设置为如下:
#服务器端
#服务器端
[root@server bacula-*]# ./configure \
--sbindir=$HOME/bacula/bin \
--sysconfdir=$HOME/bacula/bin \
--enable-smartalloc \
--enable-tray-monitor \
--with-mysql \
--with-working-dir=$HOME/bacula/bin/working \
--with-pid-dir=$HOME/bacula/bin/working \
--with-subsys-dir=$HOME/bacula/bin/working \
--enable-conio
#FD端
#FD端
[root@server bacula-*]# ./configure \
--enable-client-only \
--sbindir=$HOME/bacula/bin \
--sysconfdir=$HOME/bacula/bin \
--enable-smartalloc \
--with-working-dir=$HOME/bacula/bin/working \
--with-pid-dir=$HOME/bacula/bin/working \
--with-subsys-dir=$HOME/bacula/bin/working
然后执行下列命令:
[root@server bacula-*]# make
[root@server bacula-*]# make install
[root@server bacula-*]# make install-autostart #添加自动启动
[root@server bacula-*]# ls /etc/rc.d/init.d/ | grep bacula #查看是否成功
服务器端显示如下说明成功:
bacula-dir
bacula-fd
bacula-sd
FD端显示如下说明成功:
bacula-fd
注:FD端的安装到此已经完成,服务器端的还需要进行下面的步骤。
3. 建立Bacula用的数据库
# 启动MySQL并添加至随系统自动启动
[root@server bacula-*]# service mysqld start
[root@server bacula-*]# chkconfig --level 2345 mysqld on
# 进入Bacula可执行文件目录并建立数据库Bacula用户权限
[root@server bacula-*]# cd src/cats/
[root@server cats]# ./grant_mysql_privileges -p
Enter password:
这里密码设为空,直接按enter键即可,结果类似下面:
Host User Password Select_priv Insert_priv Update_priv Delete_priv 省略后面一部分
localhost root Y Y Y Y Y Y Y 0
chenyi root Y Y Y Y Y Y Y Y 0
127.0.0.1 root Y Y Y Y Y Y Y 0
localhost N N N N N N N 0
chenyi N N N N N N N N 0
localhost bacula N N N N N N N 0
% bacula N N N N N N N N 0
Privileges for user bacula granted on database bacula.
然后执行下列命令:
#建立Bacula 数据库,这里密码设为空,直接按enter键即可
[root@bacula cats]# ./create_mysql_database -p
Enter password:
Creation of bacula database succeeded.
#建立Bacula使用的表,这里密码设为空,直接按enter键即可
[root@bacula cats]# ./make_mysql_tables -p
Enter password:
Creation of Bacula MySQL tables succeeded.
到此,Bacula服务器端与FD端就安装完成了,还需要对Bacula进行配置。
3. Bacula服务端配置
重要重要重要重要:
作为存储服务器兼控制台,现在需要依次对bconsole.conf(控制台)、bacula-dir.conf(全局)和bacula-sd.conf(存储)配置文件进行修改。
1. 配置console端
cd /usr/local/bacula/bin
vim bconsole.conf
Director {
Name = server-dir #控制端名称,在bacula-dir.conf和bacula-sd.conf文件中的director段都会被用到
DIRport =9101
address = server #可以写IP地址,也可以写hostname,不过如果写hostname的话,要在hosts文件中添加相应的项目
Password ="kl1h6gcOxkzFAWFUb1bl7bvtyiwW702QsypPHPgcuTdK" #控制端密码文件与bacula-dir中的director中的password要相同
}
2. 配置Director端
在bacula-dir.conf中共有10个逻辑段:
- Director 定义全局设置
- Jobdefs 定义执行任务的一些共同属性,可以让任务继承&#x