参考:
https://www.baidu.com/link?url=o2QIy2YZWjsJPAFJuYFhrH3nPvtyRkSe-o5Q_FqFZ5E1EMOsIOmGeKm0HAonwHOw8WRbAKFIU1vmgAlSzC0P00CoW3DcbFJtyRPsyTbJrMq&wd=&eqid=8443d615000387c4000000065b6a8bd6
https://blog.csdn.net/hexuan1/article/details/46820723
https://blog.csdn.net/u011016554/article/details/50446458
介绍
Bacula是一个开源网络备份解决方案,允许您创建备份和执行计算机系统的数据恢复。它非常灵活和健壮,这使得它,虽然配置稍微麻烦,适合在许多情况下的备份。备份系统是在大多数服务器基础架构的重要组成部分 ,从数据丢失恢复往往是灾难恢复计划的重要组成部分。 在本教程中,我们将向您展示如何在CentOS 7服务器上安装和配置Bacula的服务器组件。我们将配置Bacula执行每周作业,创建本地备份(即其自己的主机的备份)。这本身并不是Bacula的特别引人注目的用途,但它将为您创建其他服务器(即备份客户端)的备份提供一个良好的起点。本系列的下一个教程将介绍如何通过安装和配置Bacula客户端以及配置Bacula服务器来创建其他远程服务器的备份。 如果您想使用Ubuntu 14.04代替,请点击此链接: 如何在Ubuntu 14.04安装Bacula的服务器 。
一、bacula是什么
bacula是一款开源的跨平台网络备份工具,它提供了基于企业级的客户端/服务器的备份恢复解决方案,通过它,系统管理人员可以对数据进行备份、恢复,以及完整性验证等操作,同时,它还提供了许多高级存储管理功能,使系统管理人员能够很容易发现并恢复丢失的或已经损坏的文件。bacula既有Windows版本的,也有Linux和UNIX版本的。
二、 bacula适合哪些用户
如果业务系统数据量巨大,每天都在迅速增长,还需要以tar打包方式进行低级备份,并且没有相应的异地容灾策略时,那么就应该考虑使用bacula。bacula拥有一个完美的增量备份功能,同时还支持远程容灾备份。通过bacula,可以将数据备份到任意一个远程主机上,用户只需要对bacula进行简单的设置即可自动完成数据备份。
如果用户已经拥有一套存储设备,如磁盘阵列、磁带/带库,只是需要将业务数据从服务器自动备份到这些存储设备上,bacula无疑也是最佳选择,因为bacula具有介质管理功能,利用它可以轻松地实现将服务器数据保存到一个或者多个已经挂载的磁带或带库中。虽然商业的备份软件也能完成将数据自动备份到存储设备上,但代价昂贵。
对于正在使用一个商业的备份软件如legato和Veritas等的用户,更应该尝试一下bacula,因为bacula完全可以和这些商业软件相媲美,更重要的是,bacula是开源软件,如果某些关键功能无法通过实现,可以选择修改开源软件代码的方式来实现。通过对开源软件进行简单的修改来满足特殊需求,大大简化了用户的工作。
三、bacula的功能特点
1.支持多种备份方式
(1)完全备份
完整备份就是完整地备份业务数据。例如,星期一用一盘磁带对整个业务系统进行备份,星期二用另一盘磁带对整个业务系统进行备份,依此类推。
这种备份策略的优点是:当发生数据丢失时,只要用一盘磁带(即灾难发生前一天的备份磁带)就可以恢复丢失的数据。当然,它也有不足之处。首先,由于每天都对整个系统进行完全备份,难免造成备份数据大量重复。这些重复的数据占用了大量的磁带空间,这对用户来说就意味着增加成本。其次,如果备份的数据量很大,那么备份所需的时间也就较长。对于一些业务繁忙、备份时间有限的企业来说,选择这种备份策略是不明智的。
(2)增量备份
增量备份是以上次备份为基准的备份方式,也就是只对每天新增的或被修改过的数据进行备份,例如,星期天进行一次完全备份,星期一备份从星期天到星期一之间增加的数据,星期二备份从星期一到星期二之间增加的数据,依次类推。
这种备份策略的优点是:只备份当天更新或者增加的数据,因而数据量小,节省了磁带空间,缩短了备份时间。当然,它也是有缺点的。当灾难发生时,数据的恢复过程比较麻烦。如果系统在星期五的早晨发生故障,丢失了大量的数据,那么现在就要将系统恢复到星期四时的状态。这时系统管理员首先要找到星期天的完全备份进行系统恢复,然后找到星期一的备份来恢复星期一的数据,接着找到星期二的备份来恢复星期二的数据。按照这种方式,直到恢复周四的数据为止,很明显,这种方式很繁琐。备份的可靠性也很差。在这种备份方式下,各个备份间的关系就像一个链子,环环相扣,其中任何一个备份出了问题都会导致整条链子脱节。在上例中,若星期三的备份出了故障,那么管理员最多只能将系统数据恢复到星期二时的状态。
(3)差异备份
差异备份是以完全备份为基准的一种备份方式。例如,系统管理员在星期天对系统进行一次完全备份,在星期一备份星期天到星期一之间的数据,在星期二备份星期天到星期二之间的数据,依次类推,也就是备份当天所有与星期天不同的数据(新的或修改过的)。
差异备份方式避免了上面两种备份策略的缺陷,同时,又具有以上两种备份方式的所有优点。首先,它无需每天都对系统做完全备份,因此备份数据量小,备份所需时间短,并节省空间;其次,它在灾难恢复时也很方便,只需要两个备份即可,即完全备份与灾难发生前一天的备份,就可以将系统恢复。
其实每种备份方式都不是孤立存在的,在实际的备份应用中,通常采用以上三种方式相结合的备份策略。例如每周一至周六进行一次增量备份或差异备份,每周日进行全备份,每月底进行一次完全备份,每年底进行一次完全备份。
通过对完三种备份方式的介绍,可以知道每种备份的数据量是不同的:完全备份>差分备份>增量备份。因而,在进行数据恢复时,使用的数据也不尽相同。如果使用完全备份的方式,只需要利用上次的完全备份就可以恢复所有数据;如果使用完全备份+增量备份的方式,则需要利用上次的完全备份+上次完全备份后的所有增量备份才能恢复所有数据;如果使用完全备份+差异备份的方式,则只需要利用上次的完全备份+最近的一个差异备份就可以恢复所有数据。
2.支持多种恢复方式
可以恢复某个目录、文件到指定的位置,恢复时自动恢复数据的原始结构。
可以恢复所有数据到指定位置,恢复时自动恢复数据的原始结构。
可以保存恢复文件或目录的权限、属主、访问时间等属性。
可以恢复某个时间点的备份到指定位置,恢复时自动恢复数据的原始结构。
3.支持多种文件系统下的备份与恢复
bacula支持的文件系统有:ext3、ext2、reiserfs、xfs、jfs、smbfs、 iso9660和ntfs等。
4.支持各种备份介质
支持把备份写到磁盘
支持把备份写到磁带
支持把备份写到磁盘阵列
支持把备份写到光盘
5.支持多种操作系统
Linux(RHEL/SUSE/Centos)
UNIX
Mac
Windows (Windows 98、 Windows Me、 Windows NT、Windows XP、Windows 2000和 Windows 2003)
6.强大的内部功能
支持定时备份,无需人工干预
支持终端命令控制,更加灵活
支持正则表达式,可以对备份文件进行更严格的匹配
支持MD5和SHA1两种签名校验
支持压缩备份,备份效率更高,传输更快
支持报表自动绘制功能,可以自动生成备份报表和恢复报表
四、bacula的工作原理
1.bacula基本组成
一个完整的bacula备份系统,由下面5个部分组成。
Director Daemon:以下简称Director,负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库中。支持Director Daemon的数据库有MySQL、PostgreSQL 和SQLite,推荐使用MySQL。Director的配置文件为bacula-dir.conf。
Storage Daemon:以下简称SD,在备份数据时,用来指定备份和恢复数据的存储介质(存储介质可以是本地磁盘,光纤磁盘阵列、磁带和DVD等),主要负责将数据备份到存储介质上。而在数据恢复时,负责将数据从存储介质中传送出去。SD的配置文件为bacula-sd.conf。
File Daemon:以下简称FD,是一个安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出;在恢复数据时,它负责接收数据并执行恢复操作。FD的配置文件为bacula-fd.conf。
Console:是一个管理控制台,用户可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作,有三种管理方式:基于文本的控制台界面、 GNOME的界面和wxWidgets的图形界面。Console 端的配置文件是bconsole.conf。
Monitor:一个进程监控端,负责监控Director Daemon、Storage Daemon和File Daemon的守护进程。bacula备份系统的组成如图1所示。
图1 bacula备份系统的组成
从图1中可以看出,bacula的备份恢复流程如下:
首选,通过Console连接到Director端,备份恢复操作开始。
接着,Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。
然后,客户端FD负责验证Director的操作许可,如果验证通过,则允许连接存储端SD。
最后,客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。
需要注意的是,在bacula的整个备份恢复系统中,客户端FD和SD要保证网络连接畅通,为了保证备份以及恢复数据的速度和效率,最好让客户端FD和SD处在一个网段中。
2.bacula各个组成部分的关联性
在baclua的5个组成部分中,3个主要配置文件是相互关联的,修改任何一个配置文件,另外两个文件都要进行相应的改动。为了使读者对这3个配置文件有更清晰的认识,图2列出了这3个文件之间的相互关系。
图2 bacula配置文件之间的关系
Bacula安装
根据要求:1、支持远程备份;2、支持完全、增量、压缩备份、差分备份。 决定先学习Bacula摘要:只使用1台主机,搭建bacula环境,实现服务器备份。安装环境 centos 7
1.1检查gccgcc-c++编译环境
1.2 检查mysql
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0
# vim /etc/selinux/config
卸载旧版mysql
安装新mysql 5.7.23
SELINUX=disabled
getenforce
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
mysql安装参照:通道
mysql> show variables like'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
mysql> alter user root@localhost identified by 'aaa111';
Query OK, 0 rows affected (0.01 sec) mysql> create user bacula@localhost identified by 'bbb222';
Query OK, 0 rows affected (0.00 sec) mysql> create user bacula@'%' identified by 'bbb222';
Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to bacula@localhost;
Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to bacula@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
查看mysql全部用户:
mysql>select user,host from mysql.user;
查看mysql库列表:
mysql>show databases;
进入库:
mysql>use 库名;
查看指定库中列表:
mysql>show tables;
查看指定用户权限:
mysql> show grants for bacula;
2.1 安装bacula2.2 创建mysql脚本2.3 启动 bacula 进程2.4 添加存储介质
3.1 安装bacula3.2 启动 bacula 的 fd 进程
1.1检查gccgcc-c++编译环境
#rpm -qa gcc gcc-c++
yum install -y gcc gcc-c++
二 服务端安装bacula
2.1 下载&安装bacula
在这个server上安装的bacula 具备了directory、storage、catalog.三个功能。
# tar zxvf bacula-7.0.5.tar.gz
# cd bacula-7.0.5
./configure --prefix=/usr/local/bacula \
--sbindir=/usr/local/bacula/sbin\
--sysconfdir=/usr/local/bacula/etc \
--enable-smartalloc\
--with-working-dir=/usr/local/bacula/bin/working\
--with-subsys-dir=/usr/local/bacula/bin/working\
--with-pid-dir=/usr/local/bacula/bin/working \
--with-mysql
# make&&make install
#make install-autostart
这里指定了路径为/usr/local/bacula,默认情况下,bacula 的安装路径为/etc/bacula.
设置环境变量:
vim /etc/profile 在最后一行加入: export PATH=$PATH:/usr/local/bacula/sbin 保存退出:source /etc/profile
****************************************************
bacula目录结构:
[root@localhost home]# cd bacula/
[root@localhost bacula]# ls
bin etc lib sbin share
[root@localhost bacula]# ls etc/
bacula btraceback.gdb grant_bacula_privileges
bacula_config btraceback.mdb grant_mysql_privileges
bacula-ctl-dir create_bacula_database make_bacula_tables
bacula-ctl-fd create_mysql_database make_catalog_backup
bacula-ctl-sd delete_catalog_backup make_catalog_backup.pl
bacula-dir.conf disk-changer make_mysql_tables
bacula-fd.conf drop_bacula_database mtx-changer
bacula-sd.conf drop_bacula_tables mtx-changer.conf
bconsole drop_mysql_database query.sql
bconsole.conf drop_mysql_tables update_bacula_tables
btraceback.dbx dvd-handler update_mysql_tables
[root@localhost bacula]#
*****************************************************************************************************
#./grant_mysql_privileges
***********************************************
执行这一步可能遇到这个问题: ./grant_mysql_privileges
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Error creating privileges.
if $bindir/mysql $* -u root -proot -f <<END-OF-DATA
#!/bin/sh
#
# shell script to grant privileges to the bacula database
#
# Copyright (C) 2000-2017 Kern Sibbald
# License: BSD 2-Clause; see file LICENSE-FOSS
#
db_user=${db_user:-bacula}
bindir=/usr/bin
db_name=${db_name:-bacula}
db_password=
if [ "$db_password" != "" ]; then
pass="identified by '$db_password'"
fi
db_ssl_options=
if [ "$db_ssl_options" != "" ]; then
ssl_options="require $db_ssl_options"
fi if $bindir/mysql $* -u root -p -f 2>/dev/null 1>/dev/null <<EOD
use mysql;
create user ${db_user} ${pass};
EOD
then
echo "Created MySQL database user: ${db_user}"
fi if $bindir/mysql $* -u root -p -f <<END-OF-DATA
use mysql
grant all privileges on ${db_name}.* to ${db_user}@localhost ${pass} ${ssl_options};
grant all privileges on ${db_name}.* to ${db_user}@"%" ${pass} ${ssl_options};
select * from user;
flush privileges;
END-OF-DATA
then
echo "Privileges for user ${db_user} granted on database ${db_name}."
exit 0
else
echo "Error creating privileges."
exit 1
fi
接下来的建库建表同上
***********************************************
#./ create_mysql_database
#./ make_mysql_tables
二、客户端安装bacula
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
检查gcc gcc-c++环境
rpm -qa | grep gcc*
安装gcc gcc-c++
yum install -y gcc gcc-c++
2.1 安装 bacula
该客户端bacula只作fd(被备份文件)。
# tar zxvf bacula-7.0.5.tar.gz
# cd bacula-7.0.5
# ./configure --enable-client-only # 默认安装在/etc/bacula/目录下,也可以加--prefix= 指定安装路径
#make&&make install
- 主控端配置文件的 Director{}项。
因为在执行一个任务(Job)的过程中,需要调用到其他选项的参数设置,从而使得任务的完整。如果这么多的参数全部写在 Job 选项里,那么就会将导致 Job 选项的参数设置非常复杂,这样的模块化设计显得更直观,也能使程序运行更效高效。下面用一句话说明一下:
建立一个备份任务(Job)时,就需要选择一台备份的计算机(Client),然后确定需要备份的文件(FileSet)及备份时间周期和备份类型(Schedule),最后选择备份到哪里(Storage)以及文件存储的方式(Pool),让管理者知道备份任务的的情况(Messages)。
注意:Job 项也可以是还原任务。
Bacula Director 服务管理所有的备份,恢复,验证和存档事务,所以主控端的配置文件也是最为复杂的。下面结合实际使用的配置文件对文件中各选项的参数设置进行详细的介绍。
Director{
Name = saas-dir #指定主控端名称
Password = "ConsolePassword" #设置主控端密码,控制台连接时需要使用。
QueryFile = "/usr/local/bacula/etc/query.sql" #指定执行sql脚本存放的路径
WorkingDirectory = "/usr/local/bacula/bin/working"
PidDirectory = "/usr/local/bacula/bin/working" #指定进程 ID 文件存放目录,必选。一般在./configure 时已经指定
Maximum Concurrent Jobs = 20 #设置同时执行的最大任务数量,默认设置为 1。
DirPort = 9101 #default 9101 #指定端口号监听控制台连接,默认是 9101。
#troggle
MaximumConsoleConnections = 20 #指定控制台最大同时连接数,默认是 20。
Messages = Daemon #引用 Messages{}的 Name 值
#JobDefs 选项允许所有可以出现在 Job 选项中的参数。但是,JobDefs 不会创建一个作业(Job),而是 Job{}引用它的参数设置。
JobDefs{
Name ="DefaultJob" #指定 Job{}名称
Type =Backup #Job 类型,定义备份作业或还原作业。取值有 Backup、Restore、Verify 和 Admin。
#Level =Incremental #备份类型,当 type 参数为备份作业时,取值有 Full、Incremental 和 Differential;还原作业不需要设置此选项;当 type 参数为 Verify 作业时,取值有 InitCatalog、Catalog、VolumeToCatalog 和 DiskToCatalog。
Fileset = "Full Set" #引用 FlieSet{}的 Name 值,也就是选择客户端需要备份的目录及文件。
Schedule = "schedule" #引用 Schedule{}的 Name 值,设置作业执行的时间周期,可选。如果没有指定,此任务必须手动执行。
Storage = saas-sd #引用 Storage{}的 Name 值,选择执行 Job 时的存储端。
Messages =Standard #引用 Messages{}的 Name 值
Pool = Default #引用 Pool{}的 Name 值
Write Bootstrap= "/usr/local/bacula/working/Client1.bsr" #Type=Backup 当执行备份作业是,将作业记录写入到一个引导文件。此参数只用于Job 类型为Backup 时,此时必选。
}
Storage{
Name = saas-sd
Address =192.168.1.170 #storage Ip #指定存储端的地址,可以是 IP 或者计算机名,如果选择计算机名,必须在/etc/hosts文件中加入解析条目,让系统能解析到此计算机名。必选。
SD Port =9103 #指定存储端的端口号,默认为 9103。
Password = "StoragePassword" #指定存储端的密码
Device = FileStorage #指定存储的设备。引用存储端配置文件的 Device{}的 Name 值,必选。
Media Type = File #与存储端配置文件的 Device{}的 Media Type 值相同,必选
Maximum Concurrent Jobs = 20 #定义此存储端所允许同时进行的任务最大数量,默认为 1。
}
Schedule{
Name = "schedule"
Run = Level=Full daily at 11:20 #指定覆盖 Job{}默认参数的参数及执行作业的时间周期。具体语法规范见附件。
Run = Level=Incremental daily at 11:25
}
#Fileset{}定义哪些文件需要备份或者哪些文件排除在备份任务中,定义一个Fileset{}是每个备份任务必须的。可定义一个文件或者目录清单,可将压缩、加密和签名各种备份方案应用到每个文件。
Fileset{
Name = "Full Set"
Include{
signature = MD5
}
File = /root/桌面/备份用的test
}
}
Client{
Name= saas-fd
Address = localhost #client IP 指定客户端地址,可以是 IP 或者计算机名,如果选择计算机名,必须在/etc/hosts文件中加入解析条目,让系统能解析到此计算机名。必选。
FDPort = 9102 #指定客户端的端口号,默认为 9102。
Password = "ClientPassword" #客户端的密码
Catalog = MyCatalog #引用 Catalog{}的 Name 值,为客户端调用。必选。
Maximum Concurrent Jobs = 20
}
Catalog { # 关于数据库的定义
Name = MyCatalog
}
#完全备份
Job{
Name = "FullBackup"
Type=Backup
Level=Full
JobDefs="DefaultJob" #引用 JobDefs{}的 Name 值。可选。
}
#增量备份
Job{
Name = "IncrementalBackup"
Type=Backup #Job 类型,定义备份作业或还原作业。取值有 Backup、Restore、Verify 和 Admin。
Level=Incremental #备份类型,当 type 参数为备份作业时,取值有 Full、Incremental 和 Differential;还原作业不需要设置此选项;当 type 参数为 Verify 作业时,取值有 InitCatalog、Catalog、VolumeToCatalog 和 DiskToCatalog。
}
#差分备份
Job{
Name = "DifferentialBackup"
Type=Backup
Level=Differential
JobDefs="DefaultJob"
Rerun Failed Levels = yes #当运行任务运行失败后一次备份作业时,将提升更高的备份类型,比如差异备份异常终止,下次备份将执行完全备份。默认为 no
}
#备份还原
Job{
Name="restore"
Type= Restore
Bootstrap = "/usr/local/bacula/working/Restore1.bsr" #指定引导文件,启动还原作业时自动创建。此参数只用于 Job 类型为 Restore 时,此时必选。 这个文件必须存在于电脑上,如果没有手动touch
Pool = Default
Client = saas-fd
Fileset = "Full Set"
Messages =Standard
Storage = saas-sd
#Where = /root/桌面/备份用的test
}
# Reasonable message delivery -- send most everything to email address
# and to the console
Messages {
Name = Standard
mailcommand = "/sbin/bsmtp -h localhost -f \"BaculaBacula \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"BaculaBacula \<%r\>\" -s \"Bacula: Intervention needed
for %j\" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/usr/local/bacula/log/bacula.log" = all, !skipped
catalog = all
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/sbin/bsmtp -h localhost -f \"BaculaBacula \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/usr/local/bacula/log/bacula.log" = all, !skipped
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
Recycle = yes # 是否重复使用 Volume
AutoPrune = yes # 是否自动修剪
Volume Retention = 365 days # Volume 保留时间,默认为 1 年
Maximum Volume Bytes = 50G # 最大Volume(卷)的大小
Maximum Volumes = 100 # Limit number of Volumes in Pool
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = saas-mon #指定 Console{}名称,必选。
Password = "MonitorPassword" #指定 Console{}密码,必选。
CommandACL = status, .status
}
Storage{
Name = saas-sd #指定 Storage{}名称,与主控端storage{}名称相同
WorkingDirectory = "/usr/local/bacula/bin/working" #指定工作目录,目录必须已经存在,必选。一般在./configure时已经指定。
PidDirectory = "/usr/local/bacula/bin/working" #指定进程 ID 文件存放目录,必选。一般在./configure 时已经指定。
SDPort =9103
Maximum Concurrent Jobs = 20
}
Device { #定义Device
Name = FileStorage #定义Device的名称,这个名称在Director端配置文件bacula-dir.conf中的Storage逻辑段Device项中被引用
Media Type = File #指定存储介质的类型,File表示使用文件系统存储
Archive Device = /tmp/backup #Archive Device用来指定备份存储的介质,可以是cd、dvd、tap等,这里是将备份的文件保存的/tmp/backup目录下
LabelMedia = yes; #通过Label命令来建立卷文件
Random Access = Yes; #设置是否采用随机访问存储介质,这里选择yes
AutomaticMount = yes; #表示当存储设备打开时,是否自动使用它,这选择yes
RemovableMedia = no; #是否支持可移动的设备,如tap或cd,这里选择no
AlwaysOpen = no; #是否确保t设备总是可用
}
Director{
Name =saas-dir #指定 Director{}名称,设置主控端 配 置 文 件 中 Director{} 的 Name 值
Password="StoragePassword" #指 定 主 控 端 配 置 文 件Storage{}的 Password 值,必选。
#托盘监控相关设置
Director {
Name = saas-mon #指定 Director{}名称,设置托盘监控配置文件中 Monitor{}的Name 值,必选。
Password = "MonitorPassword"
Monitor = yes #是否开启监控。默认值 no
}
Messages { # 为存储端SD定义一个日志或消息处理机制
Name = Standard
director = saas-dir = all
}
四、客户端配置文件详解 (bacula-fd.conf)
Director {
Name = saas-dir # 与服务器上的bacula-dir.conf中一致
Password = "ClientPassword" # 与服务器上的bacula-dir.conf文本中client定义的一致
}
Director {
Name = saas-mon # 与服务器上的bacula-dir.conf中一致
Password = "MonitorPassword" # 与服务器上的bacula-dir.conf中一致
Monitor = yes
}
FileDaemon {
Name = saas-fd # 指自己,对应主控制器中client的Name
FDport = 9102 # 监听端口r
WorkingDirectory = /usr/local/bacula/bin/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
Messages {
Name = Standard
director = Client-dir = all, !skipped, !restored
}
Name = saas-dir
DIRport = 9101
address = localhost # 服务器位置
Password = "ConsolePassword" # 与bacula-dir.conf中director中一致
}
用如下命令验证各配置是否有问题:
bacula-dir -tc bacula-dir.conf
如果bacula-dir未安装,则先安装
yum search bacula-dir
[root@centos7-6 etc]# yum search bacula-dir
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.shu.edu.cn
* updates: mirrors.aliyun.com
================================================ N/S matched: bacula-dir ================================================
bacula-director.x86_64 : Bacula Director files Name and summary matches only, use "search all" for everything.
yum install -y bacula-director.x86_64
在安装和配置好了bacula后,我们就可以开始使用它来进行备份和还原操作。
#./bacula-ctl-dir start
#./bacula-ctl-sd start
netstat -lnp | grep 91
[root@centos7-6 ~]# netstat -lnp | grep 91
tcp 0 0 192.168.10.106:9101 0.0.0.0:* LISTEN 10763/bacula-dir
tcp 0 0 0.0.0.0:9102 0.0.0.0:* LISTEN 10584/bacula-fd
tcp 0 0 0.0.0.0:9103 0.0.0.0:* LISTEN 10625/bacula-sd
如9101未启用,进mysql添加bacula用户并授权:
create user 'bacula'@'localhost' identified by 'bbb222';
create user 'bacula'@'%' identified by 'bbb222';
GRANT ALL ON *.* TO ‘bacula’@‘%’; flush privileges;
[root@localhost sbin]# ./bconsole
Connecting to Director localhost:9101
1000 OK: 1 saas-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*help
Command Description
======= ===========
add Add media to a pool
autodisplay Autodisplay console messages
automount Automount after label
cancel Cancel a job
create Create DB Pool from resource
delete Delete volume, pool or job
disable Disable a job, attributes batch process
enable Enable a job, attributes batch process
estimate Performs FileSet estimate, listing gives full listing
exit Terminate Bconsole session
gui Non-interactive gui mode
help Print help on specific command
label Label a tape
list List objects from catalog
llist Full or long list like list command
messages Display pending messages
memory Print current memory usage
mount Mount storage
prune Prune expired records from catalog
purge Purge records from catalog
quit Terminate Bconsole session
query Query catalog
restore Restore files
relabel Relabel a tape
release Release storage
reload Reload conf file
run Run a job
status Report status
stop Stop a job
setdebug Sets debug level
setbandwidth Sets bandwidth
setip Sets new client address -- if authorized
show Show resource records
sqlquery Use SQL to query catalog
time Print current time
trace Turn on/off trace to file
truncate Truncate one or more Volumes
unmount Unmount storage
umount Umount - for old-time Unix guys, see unmount
update Update volume, pool or stats
use Use catalog xxx
var Does variable expansion
version Print Director version
wait Wait until no jobs are running
When at a prompt, entering a period cancels the command.
Connecting to Director localhost:9101
1000 OK: 1 saas-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
1: FullBackup
2: IncrementalBackup
3: DifferentialBackup
4: restore
Select Job resource (1-4): 1
Run Backup job
JobName: FullBackup
Level: Full
Client: saas-fd
FileSet: Full Set
Pool: Default (From Job resource)
Storage: saas-sd (From Job resource)
When: 2015-07-02 13:49:03
Priority: 10
Parameters to modify:
1: Level
2: Storage
3: Job
4: FileSet
5: Client
6: When
7: Priority
8: Pool
9: Plugin Options
Select parameter to modify (1-9): 6
Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): 2015-07-02 14:00:00
Run Backup job
JobName: FullBackup
Level: Full
Client: saas-fd
FileSet: Full Set
Pool: Default (From Job resource)
Storage: saas-sd (From Job resource)
When: 2015-07-02 14:00:00
Priority: 10
已建立 Job,JobId 为 80。
Status available for:
1: Director
2: Storage
3: Client
4: Scheduled
5: All
saas-dir Version: 7.0.5 (28 July 2014) x86_64-unknown-linux-gnu redhat (Core)
Daemon started 02-7月015 10:11. Jobs: run=6, running=1 mode=0,0
Heap: heap=393,216 smbytes=416,834 max_bytes=769,569 bufs=356 max_bufs=484
Scheduled Jobs:
Level Type Pri Scheduled Job Name Volume
===================================================================================
Full Backup 10 03-7月015 11:20 FullBackup test10
Full Backup 10 03-7月015 11:20 DifferentialBackup test10
Full Backup 10 03-7月015 11:20 IncrementalBackup test10
Incremental Backup 10 03-7月015 11:25 FullBackup test10
Incremental Backup 10 03-7月015 11:25 IncrementalBackup test10
Incremental Backup 10 03-7月015 11:25 DifferentialBackup test10
====
Running Jobs:
Console connected at 02-7月015 13:57
JobId Type Level Files Bytes Name Status
======================================================================
80 Back Full 0 0 FullBackup is waiting for its start time (02-7月 14:00)
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
65 Full 6 39.56 K OK 01-7月015 19:47 FullBackup
67 0 0 Cancel 01-7月015 20:24 restore
71 6 39.56 K OK 01-7月015 20:29 restore
72 6 39.56 K OK 01-7月015 20:32 restore
74 Full 2 19.78 K OK 02-7月015 11:37 FullBackup
75 Full 2 19.78 K OK 02-7月015 11:37 IncrementalBackup
76 Full 2 19.78 K OK 02-7月015 11:37 DifferentialBackup
77 Incr 2 19.78 K OK 02-7月015 11:37 FullBackup
78 Incr 2 19.78 K OK 02-7月015 11:37 IncrementalBackup
79 Full 2 19.78 K OK 02-7月015 11:37 DifferentialBackup
====
Connecting to Storage daemon saas-sd at 192.168.1.170:9103
saas-sd Version: 7.0.5 (28 July 2014) x86_64-unknown-linux-gnu redhat (Core)
Daemon started 02-7月015 11:37. Jobs: run=6, running=0.
Heap: heap=135,168 smbytes=473,290 max_bytes=1,086,762 bufs=111 max_bufs=177
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0
Running Jobs:
No Jobs running.
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===================================================================
63 2 20.02 K OK 01-7月015 16:28 restore
65 Full 6 40.32 K OK 01-7月015 19:47 FullBackup
71 6 40.32 K OK 01-7月015 20:29 restore
72 6 40.32 K OK 01-7月015 20:32 restore
74 Full 2 20.02 K OK 02-7月015 11:37 FullBackup
75 Full 2 20.02 K OK 02-7月015 11:37 IncrementalBackup
76 Full 2 20.02 K OK 02-7月015 11:37 DifferentialBackup
77 Incr 2 20.02 K OK 02-7月015 11:37 FullBackup
78 Incr 2 20.02 K OK 02-7月015 11:37 IncrementalBackup
79 Full 2 20.02 K OK 02-7月015 11:37 DifferentialBackup
====
Device status:
Device "FileStorage" (/tmp/backup) is not open.
==
====
Used Volume status:
====
====
Connecting to Client saas-fd at localhost:9102
saas-fd Version: 7.0.5 (28 July 2014) x86_64-unknown-linux-gnu redhat (Core)
Daemon started 02-7月015 11:37. Jobs: run=6 running=0.
Heap: heap=135,168 smbytes=588,233 max_bytes=886,066 bufs=86 max_bufs=153
Sizes: boffset_t=8 size_t=8 debug=0 trace=0 mode=0,0 bwlimit=0kB/s
Running Jobs:
Director connected at: 02-7月015 13:57
No Jobs running.
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===================================================================
63 2 19.78 K OK 01-7月015 16:28 restore
65 Full 6 39.56 K OK 01-7月015 19:47 FullBackup
71 6 39.56 K OK 01-7月015 20:29 restore
72 6 39.56 K OK 01-7月015 20:32 restore
74 Full 2 19.78 K OK 02-7月015 11:37 FullBackup
75 Full 2 19.78 K OK 02-7月015 11:37 IncrementalBackup
76 Full 2 19.78 K OK 02-7月015 11:37 DifferentialBackup
77 Incr 2 19.78 K OK 02-7月015 11:37 FullBackup
78 Incr 2 19.78 K OK 02-7月015 11:37 IncrementalBackup
79 Full 2 19.78 K OK 02-7月015 11:37 DifferentialBackup
3.3 查看 Job 执行详情
执行 messages 命令查看日志。注意当 Job 执行完成后,系统自动将信息显示在bconsole 控制台,如果信息已显示后,再次查看此任务信息,则需要查看 Bacula 日志文件(日志文件由bacula配置bacula-dir.conf中的Messages指定)
You have messages.
*messages
02-7月 14:00 saas-dir JobId 80: Start Backup JobId 80, Job=FullBackup.2015-07-02_13.53.30_12
02-7月 14:00 saas-dir JobId 80: Using Device "FileStorage" to write.
02-7月 14:00 saas-sd JobId 80: Volume "test10" previously written, moving to end of data.
02-7月 14:00 saas-sd JobId 80: Ready to append to end of Volume "test10" size=185,783
02-7月 14:00 saas-sd JobId 80: Elapsed time=00:00:10, Transfer rate=2.002 K Bytes/second
02-7月 14:00 saas-dir JobId 80: Bacula saas-dir 7.0.5 (28Jul14):
Build OS: x86_64-unknown-linux-gnu redhat (Core)
JobId: 80
Job: FullBackup.2015-07-02_13.53.30_12
Backup Level: Full
Client: "saas-fd" 7.0.5 (28Jul14) x86_64-unknown-linux-gnu,redhat,(Core)
FileSet: "Full Set" 2015-06-30 19:26:42
Pool: "Default" (From Job resource)
Catalog: "MyCatalog" (From Client resource)
Storage: "saas-sd" (From Job resource)
Scheduled time: 02-7月-2015 14:00:00
Start time: 02-7月-2015 14:00:02
End time: 02-7月-2015 14:00:13
Elapsed time: 11 secs
Priority: 10
FD Files Written: 2
SD Files Written: 2
FD Bytes Written: 19,780 (19.78 KB)
SD Bytes Written: 20,028 (20.02 KB)
Rate: 1.8 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s): test10
Volume Session Id: 7
Volume Session Time: 1435808229
Last Volume Bytes: 206,249 (206.2 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK
02-7月 14:00 saas-dir JobId 80: Begin pruning Jobs older than 6 months .
02-7月 14:00 saas-dir JobId 80: No Jobs found to prune.
02-7月 14:00 saas-dir JobId 80: Begin pruning Files.
02-7月 14:00 saas-dir JobId 80: No Files found to prune.
02-7月 14:00 saas-dir JobId 80: End auto prune.
*
根据提示信息我们可以知道是否备份成功、文件保存到了哪个位置哪个文件。
restore 命令执行还原
*restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Select item: (1-13): 5
这里列出了很多种还原方式,这里选择第 5 种,还原最近的一次备份。
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.
cwd is: /
$ mark *
2 files marked.
$ done
输入 JobId 后,系统提示进入’文件选择模式’,也就是说可以选择哪些文件需要还原’mark’,哪些文件不需要还原’unmark’,还原所有文件为’mark *’。输入’mark *’之后,输入’done’完成文件选择;
Bootstrap records written to /usr/local/bacula/bin/working/saas-dir.restore.1.bsr
The Job will require the following (*=>InChanger):
Volume(s) Storage(s) SD Device(s)
===========================================================================
test10 saas-sd FileStorage
Volumes marked with "*" are in the Autochanger.
2 files selected to be restored.
Using Catalog "MyCatalog"
Run Restore job
JobName: restore
Bootstrap: /usr/local/bacula/bin/working/saas-dir.restore.1.bsr
Where: *None*
Replace: always
FileSet: Full Set
Backup Client: saas-fd
Restore Client: saas-fd
Storage: saas-sd
When: 2015-07-02 14:19:11
Catalog: MyCatalog
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=81
还原后,也可以通过messages查看是否还原成功。同样的也可以通过status命令查看。
#
Director {
Name = zdy1.cluster.com-dir
Password = "cerU/APZwPP2zVSfrZuU+Y4osaZH5xrdEIwrpkCXqUMW"
#此密码和在服务器中(client172.conf)定义的客户端密码相同
} Director {
Name = zdy1.cluster.com-mon
Password = "qYhhy5PNCZTgW/nzE1JYiPRr+fBmUYR93uqLIyFNCDR1" #服务器zdy1中dir.conf中的第一个director密码
Monitor = yes
} FileDaemon { # this is me
Name = zdy2.cluster.com-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /usr/local/bacula/opt/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
本地配置信息:
bacula-dir.conf
# Client (File Services) to backup
Client {
Name = centos7-7-fd
Address = 192.168.10.107
FDPort = 9102
Catalog = MyCatalog
Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6" # password for FileDaemon
File Retention = 60 days # 60 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
} Job {
Name = "Backup-7-7"
Type = Backup
Client = centos7-7-fd
# Address = 192.168.10.107
JobDefs = "DefaultJob"
Level = Full
Job {
Name = "Backup-7-7"
Type = Backup
Client = centos7-7-fd
# Address = 192.168.10.107
JobDefs = "DefaultJob"
Level = Full
FileSet="Full Set"
Schedule = "WeeklyCycleAfterBackup"
Storage = File1
Messages = Standard
Pool = File # This creates an ASCII copy of the catalog
# Arguments to make_catalog_backup.pl are:
# make_catalog_backup.pl <catalog-name>
# RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup.pl MyCatalog"
# This deletes the copy of the catalog
# RunAfterJob = "/usr/local/bacula/etc/delete_catalog_backup" Write Bootstrap = "/opt/bacula/working/%n.bsr"
Priority = 11 # run after main backup
}
# # Standard Restore template, to be changed by Console program
# Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
Name = "RestoreFiles-7-7"
Type = Restore
Client=centos7-7-fd
Storage = File1
# The FileSet and Pool directives are not used by Restore Jobs
# but must not be removed
FileSet="Full Set"
Pool = File
Messages = Standard
# Where = /tmp/bacula-restores
Where = /bacula/restore/centos7-7-fd
}
#
远程客户端:bacula-fd.conf
# List Directors who are permitted to contact this File daemon
#
#Director {
# Name = centos7-7-dir
# Password = "FhvXq+VG53KfZD/OcebnbR+HI5IpH3yXSZPhoKsvzjTj"
# Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6"
#} Director {
Name = centos7-6-dir
Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6"
} #
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
#Director {
# Name = centos7-7-mon
# Password = "w/9xNagm9iPLEa0hZnIajVXCWKfxpAatVpGT8L1y8HCs"
# Password = "5PvITI2xWIZKIb+aExPtQhyGoeB55YhjVU+Bx6IKB71u"
# Monitor = yes
#} Director {
Name = centos7-6-mon
Password = "5PvITI2xWIZKIb+aExPtQhyGoeB55YhjVU+Bx6IKB71u6"
Monitor = yes
} #
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = centos7-7-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /opt/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib64
} # Send all messages except skipped files back to Director
Messages {
Name = Standard
director = centos7-7-dir = all, !skipped, !restored
}
2.1.1 Bacula 3.0 或以上版本
2.1.2 系统安装有 Mysql,PostgreSQL 或 SQlite 数据库
2.1.3 Zend Framework 1.8.3 或更高版本
2.1.4 PHP 5.2.4 或更高版本,并安装 php-gd、php-pdo、php-dom、php-xml、php-mysql 及 php-pgsql 包
2.1.5 一个兼容性不错的浏览器
2.2 检查是否符合安装要求
#cd install/
没有安装php: yum install php
Webacula check System Requirements...
Current MySQL version = 5.6.25 OK
Current PostgreSQL version = 9.4.4 OK
Current Sqlite version = 3.7.17 OK
Current PHP version = 5.4.16 OK
php pdo installed. OK
php gd installed. OK
php xml installed. OK
php dom installed. OK
php pdo_mysql installed. OK
php pdo_pgsql installed. OK
php pdo_sqlite installed. OK
php-dom, php-xml installed. OK
#cd ZendFramework-1.11.10-minimal/library/
然后将 webacula 目录拷贝到 apache的发布目录,并更名为webacula
cp -R webacula-7.0.0 /var/www/webacula
#cd /var/www/webacula/application/
#vi config.ini
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = root
;;your database password
db.config.password = "123456" ;;这个密码是root的密码。
db.config.dbname = bacula
bacula.sudo = ""
bacula.bconsole = "/usr/local/bacula/sbin/bconsole" ;; 这个路径的bconsole是二进制可执行文件,在bacula/etc下也有一个bconsole文件,那个是shell脚本。(这里必须用二进制文件)
[webacula]
;db.adapter = PDO_MYSQL
;db.config.host = localhost
;db.config.username = wbuser
;db.config.password = "wbpass"
;;.....
[root@localhost application]# chown root:bacula /usr/local/bacula/etc/bconsole.conf
[root@localhost application]# chmod u=rw,g=r,o= /usr/local/bacula/etc/bconsole.conf
memory_limit = 32M
max_execution_time = 3600
[root@localhost install]# vi db.conf
# bacula settings
db_name="bacula"
# for Sqlite only
db_name_sqlite="/usr/local/bacula/bin/working/bacula.db"
# !!! CHANGE_THIS !!!
db_pwd="" #root密码
# Webacula web interface settings
#
# Built-in superuser login is 'root'
#
# !!! CHANGE_THIS !!!
# Use
# ./password-to-hash.php <password>
# and insert the resulting hash below #这个密码要先运行./password-to-hash.php <password> ,如 ./password-to-hash.php 123456 ,将结果写到这里。
webacula_root_pwd="$P$BWMY1REK18VlkYh7jWqtSfj0uOrB561" #加了盐,每次生成都不一样,不要直接复制这行到时候出现用户名密码错误。
~
~
"db.conf" 21L, 423C
# cd /var/www/webacula/install/MySql/
#./10_make_tables.sh
#./20_acl_make_tables.sh
#service httpd start
#chmod 777 /var/www/webacula/data/cache
webacula运行遇到很多有关权限的问题,猜测是因为apache用户和root用户之间引起的,没去深究,直接给整个/var/www/webacula文件夹下所有文件赋777就好了。
可在 Bacula 站点(http://www.bacula.org/)获取最新版本;
也可在开源站点 Sourceforge 的 Bacula 项目中下载此程序安装包(Win32_64)。
(bacula-dir.conf,下同)”Client”项“Password”的值一致。其他均为默认值(Name
注意”DIR Address”值为主控端计算机名或者 IP,如果填写的是计算机名,那么本机
的 hosts 文 件 一 定 能 解 析 到 , 也 就 是 在 Windows 系 统 的 hosts 文 件
(C:\Windows\System32\drivers\etc\hosts)中加入解析条目。格式如下:
# 编辑 C:\Windows\System32\drivers\etc\hosts
# 格式: IP 计算机名
# 以下是范例
192.168.160.129 ser1
192.168.160.131
redhat
192.168.160.1 sen-lenovo
可以用”ping 计算机名”命令测试一下网络是否可达。设置好后继续安装步骤:
当 Bacula 安装完成后,系统托盘会出现类似磁带形状的图标。中间那个图标就是 Bacula 托盘图标。双击可以查看 Bacula 工作状态。图标中间两个漏洞由白色两个漏洞将变成红色变成绿色,Bacula 开始保存文件;如果发生错误,。
如果任务栏没有发现托盘图标,"Bacula File Service"服务不能启动,有可能是配置文件
错误导致,可以使用-t 参数测试 Bacula 客户端配置文件是否正确及其他错误。
进入 Bacula 安装目录
# cd C:\Program Files\Bacula
# bacula-fd.exe -t bacula-fd.conf
如果各项参数配置没有问题,服务启动时发生 1067 错误,将 bacula-fd.conf 覆盖到
C:\ProgramData 目录下,然后尝试启动服务。
先决条件
您必须在CentOS 7服务器上具有超级用户(sudo)访问权限。此外,服务器将需要足够的磁盘空间用于计划在任何给定时间保留的所有备份。 如果你正在使用DigitalOcean,您应在Bacula的服务器上启用专用网络 ,以及所有在同一个数据中心的区域客户端服务器。这将允许您的服务器在执行备份时使用专用网络,从而减少网络开销。 我们将配置Bacula的使用我们的服务器,如私人FQDN bacula.private.example.com
。如果您没有DNS设置,请改用相应的IP地址。如果您没有启用专用网络,请将本教程中的所有网络连接信息替换为相关服务器可访问的网络地址(例如公共IP地址或VPN隧道)。 最后一个假设是SELinux被禁用,或者你能够自己解决SELinux相关的问题。 让我们先来看看Bacula的组件概述。
关闭selinux
临时关闭SELinux
setenforce 0
临时打开SELinux
setenforce 1
开机关闭SELinux
vi /etc/selinux/config
修改"SELINUX=disabled"为"SELINUX=disabled"
查看SELinux状态
getenforce
设置后需要重启才能生效
卸载并安装mysql
Bacula组件概述
虽然Bacula由几个软件组件组成,它遵循服务器 - 客户端备份模型;为了简化讨论,我们将集中更多的备份服务器 ,并比个人Bacula的组件备份客户端上。但是,重要的是要对各种Bacula组件有粗略的了解,所以我们现在将讨论它们。 一个Bacula的服务器 ,我们也称之为“备份服务器”,以下组件:
- Bacula Director (DIR):软件控制的备份和恢复由该文件和存储守护程序执行的操作
- Storage Daemon (SD):执行读取和用于备份的存储设备写入软件
- Catalog:即维护备份文件的数据库服务。数据库存储在SQL数据库(如MySQL或PostgreSQL)中
- Bacula Console:一个命令行界面,允许备份管理员进行交互和控制
Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.
一个Bacula的客户端 ,也就是将要备份的服务器,运行文件守护程序(FD)的组成部分。文件守护程序是为Bacula服务器(特别是主任)提供对将要备份的数据的访问的软件。我们还将这些服务器称为“备份客户端”或“客户端”。 正如我们在介绍中指出的,我们将配置备份服务器以创建其自己的文件系统的备份。这意味着备份服务器也将是一个备份客户端,并将运行文件守护程序组件。 让我们开始安装。
server和client端解压bacula压缩包,cd bacula-5.2.13
server端执行./configure--prefix=/usr/local/bacula --with-mysql
client端执行./configure--prefix=/usr/local/bacula --enable-client-only
安装Bacula和MySQL
Bacula使用SQL数据库(如MySQL或PostreSQL)来管理其备份目录。在本教程中,我们将使用MariaDB,一个替代MySQL的插件。 使用yum安装Bacula和MariaDB服务器软件包:
sudo yum install -y bacula-director bacula-storage bacula-console bacula-client mariadb-server
安装完成后,我们需要使用以下命令启动MySQL:
sudo systemctl start mariadb
MySQL8.0后的命令和之前不一样!
新建bacula用户:
use mysql;
创建用户
CREATE USER 'bacula'@'localhost' IDENTIFIED WITH mysql_native_password BY 'baculadb';
create user bacula2@localhost identified by 'baculadb2';
修改密码
ALTER USER 'bacula'@'localhost' IDENTIFIED WITH mysql_native_password BY 'baculadb';
FLUSH PRIVILEGES;
给bacula用户授全权:切换到root用户后
grant all privileges on *.* to bacula@localhost;
flush privileges;
查看数据库列表
show databases;
查看用户状态
select host,user from mysql.user;
关闭防火墙:
//临时关闭 systemctl stop firewalld
//禁止开机启动 systemctl disable firewalld
现在MySQL(MariaDB)已安装并运行,让我们使用这些脚本创建Bacula数据库用户和表:
/usr/libexec/bacula/grant_mysql_privileges
/usr/libexec/bacula/create_mysql_database -u root -p
/usr/libexec/bacula/make_mysql_tables -u bacula -p
接下来,我们要运行一个简单的安全脚本,它将删除一些危险的默认值,并锁定对我们的数据库系统的访问一点。通过运行以下命令来启动交互式脚本:
sudo mysql_secure_installation
提示将要求您输入当前的root密码。因为你刚刚安装MySQL,你很可能不会有一个,所以留空,按enter键。然后提示将询问您是否要设置root密码。来吧,打Enter
,并设置密码。 对于剩余的问题,您应该简单地打Enter
通过每个提示键接受默认值。这将删除一些示例用户和数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。 现在我们需要为Bacula数据库用户设置密码。 输入MySQL控制台,作为根MySQL用户:
mysql -u root -p
输入您刚刚设置的MySQL根密码,在提示符下。 现在设置Bacula数据库用户的密码。使用此命令,但替换突出了“Bacula的数据库密码”具有较强的密码:
UPDATE mysql.user SET Password=PASSWORD('bacula_db_password') WHERE User='bacula';
FLUSH PRIVILEGES;
一旦你完成这里,退出MySQL提示:
exit
启用MariaDB在启动时启动。使用以下命令:
sudo systemctl enable mariadb
设置Bacula使用MySQL库
默认情况下,Bacula设置为使用PostgreSQL库。因为我们使用MySQL,我们需要将其设置为使用MySQL库。 运行此命令:
sudo alternatives --config libbaccats.so
您将看到以下提示。输入1(MySQL):
OutputThere are 3 programs which provide 'libbaccats.so'.
Selection Command
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.so
2 /usr/lib64/libbaccats-sqlite3.so
*+ 3 /usr/lib64/libbaccats-postgresql.so
Enter to keep the current selection[+], or type selection number: 1
Bacula服务器(和客户端)组件现在已安装。让我们创建备份和恢复目录。
创建备份和还原目录
Bacula的需要一个备份目录,用于存储备份存档和恢复目录,其中恢复的文件将被放置。如果系统有多个分区,请确保在具有足够空间的目录上创建目录。 让我们为这两个目的创建新目录:
sudo mkdir -p /bacula/backup /bacula/restore
我们需要更改文件权限,以便只有bacula进程(和超级用户)可以访问这些位置:
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula
现在我们准备配置Bacula Director。
配置Bacula Director
Bacula有几个组件,必须独立配置才能正常工作。配置文件都可以在找到/etc/bacula
目录中。 我们将从Bacula Director开始。 在您喜欢的文本编辑器中打开Bacula Director配置文件。我们将使用vi:
sudo vi /etc/bacula/bacula-dir.conf
配置Director资源
查找主任资源,并将其配置为监听127.0.0.1
(本地主机),加入DirAddress
这里显示的一行:
Director { # define myself
Name = bacula-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "@@DIR_PASSWORD@@" # Console password
Messages = Daemon
DirAddress = 127.0.0.1
}
现在移动到文件的其余部分。
配置本地作业
Bacula作业用于执行备份和恢复操作。作业资源定义特定作业将执行的操作的详细信息,包括客户端的名称,要备份或恢复的FileSet等。 在这里,我们将配置将用于执行本地文件系统备份的作业。 在Director配置,找到“BackupClient1”(搜索“BackupClient1”)的名称作业的资源。 的值更改Name
为“BackupLocalFiles”,所以它看起来是这样的:
Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}
接下来,找到名为“RestoreFiles”(搜索“RestoreFiles”)的工作资源。 在这个岗位上,你想改变两件事:更新的值, Name
为“RestoreLocalFiles”,而价值Where
,以“/ Bacula的/恢复”。它应该看起来像这样:
Job {
Name = "RestoreLocalFiles"
Type = Restore
Client=BackupServer-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /bacula/restore
}
此配置RestoreLocalFiles作业以还原文件/bacula/restore
的目录中,我们前面创建。
配置文件集
一个文件集Bacula的定义了一组文件或目录包含或排除备份选择的文件,并通过作业使用。 找到名为“完整集”的FileSet资源(它在注释说“#要备份的文件列表”)。在这里,我们将实现三个转变:(1)添加到使用gzip压缩我们的备份选项,(2)改变包括文件/usr/sbin
为/
,和(3)添加File = /bacula
下排除部分。删除评论后,应该看起来像这样:
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /
}
Exclude {
File = /var/lib/bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /bacula
}
}
让我们来看看我们对“完全集”FileSet所做的更改。首先,我们在创建备份存档时启用gzip压缩。第二,我们在包括/
,即根分区,来进行备份。 第三,我们均不含/bacula
,因为我们不想冗余备份Bacula的我们的备份和恢复的文件。
Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.
请记住,如果您始终在备份作业中使用广泛的文件集(例如“完整集”),则备份将需要比备份选择更具体的磁盘空间。例如,只包含自定义配置文件和数据库的FileSet可能足以满足您的需要,如果您有一个明确的恢复计划,详细安装所需的软件包,并将恢复的文件放置在正确的位置,而只使用一小部分备份存档的磁盘空间。
配置存储后台进程连接
在Bacula Director配置文件中,存储资源定义了Director应连接到的存储后台程序。我们将在稍后配置实际的存储守护程序。 查找存储资源,并更换地址,值localhost
,用你的备份服务器的FQDN私人(或私有IP地址)。它应该看起来像这样(替换突出显示的词):
Storage {
Name = File
# Do not use "localhost" here
Address = backup_server_private_FQDN # N.B. Use a fully qualified name here
SDPort = 9103
Password = "@@SD_PASSWORD@@"
Device = FileStorage
Media Type = File
}
这是必要的,因为我们将配置存储守护程序在专用网络接口上侦听,以便远程客户端可以连接到它。
配置目录连接
在Bacula Director配置文件中,Catalog资源定义了Director应该使用和连接到的数据库。 找到名为“MyCatalog”(这是一个评论,说:“通用目录服务”下),以及更新的价值目录资源dbpassword
所以它匹配您的Bacula的 MySQL用户设置密码:
# Generic catalog service
Catalog {
Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport =
dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula_db_password"
}
这将允许Bacula Director连接到MySQL数据库。
配置池
池资源定义了Bacula用于写入备份的存储集。我们将使用文件作为存储卷,我们将仅更新标签,以便我们的本地备份被正确标记。 找到名为“文件”的池资源(它在注释说“#文件池定义”),并添加一行指定标签格式。完成后应该看起来像这样:
# File Pool definition
Pool {
Name = File
Pool Type = Backup
Label Format = Local-
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
Maximum Volumes = 100 # Limit number of Volumes in Pool
}
保存并退出。你终于完成了Bacula Director的配置。
检查引导程序配置:
让我们验证您的Director配置文件中没有语法错误:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
如果没有错误信息,您bacula-dir.conf
文件没有语法错误。 接下来,我们将配置存储后台程序。
配置存储后台进程
我们的Bacula服务器几乎已经设置好,但是我们仍然需要配置存储后台程序,因此Bacula知道在哪里存储备份。 在您喜欢的文本编辑器中打开SD配置。我们将使用vi:
sudo vi /etc/bacula/bacula-sd.conf
配置存储资源
查找存储资源。这定义了SD进程将侦听连接的位置。添加SDAddress
参数,并将其分配给备份服务器的FQDN私人(或私有IP地址):
Storage { # definition of myself
Name = BackupServer-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = backup_server_private_FQDN
}
配置存储设备
接下来,找到名为“FileStorage”(搜索“FileStorage”),设备资源,更新的价值Archive Device
,以配合您的备份目录:
Device {
Name = FileStorage
Media Type = File
Archive Device = /bacula/backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
保存并退出。
验证存储后台进程配置
让我们验证您的存储后台程序配置文件中没有语法错误:
sudo bacula-sd -tc /etc/bacula/bacula-sd.conf
如果没有错误信息,您bacula-sd.conf
文件中有没有语法错误。 我们已经完成了Bacula配置。我们准备重新启动Bacula服务器组件。
设置Bacula组件密码
每个Bacula组件(例如Director,SD和FD)都有用于组件间身份验证的密码 - 您在查看配置文件时可能会注意到占位符。可以手动设置这些密码,但是,因为你实际上不需要知道这些密码,我们将运行命令来生成随机密码并将它们插入到各种Bacula配置文件中。 这些命令生成并设置Director密码。该bconsole
连接到处长,所以它需要的密码太:
DIR_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bacula-dir.conf
sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bconsole.conf
这些命令生成并设置Storage Daemon密码。 Director连接到SD,所以它还需要密码:
SD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-sd.conf
sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-dir.conf
这些命令生成并设置本地文件守护程序(Bacula客户端软件)密码。 Director连接到此FD,因此它还需要密码:
FD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-dir.conf
sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-fd.conf
现在我们准备好开始我们的Bacula组件!
启动Bacula组件
使用以下命令启动Bacula Director,Storage Daemon和本地文件守护程序:
sudo systemctl start bacula-dir
sudo systemctl start bacula-sd
sudo systemctl start bacula-fd
如果它们都正确启动,请运行这些命令,使它们在启动时自动启动:
sudo systemctl enable bacula-dir
sudo systemctl enable bacula-sd
sudo systemctl enable bacula-fd
让我们通过运行备份作业来测试Bacula的工作原理。
测试备份作业
我们将使用Bacula控制台运行我们的第一个备份作业。如果它运行没有任何问题,我们将知道Bacula配置正确。 现在使用此命令输入控制台:
sudo bconsole
这将带您到Bacula的控制台提示,由记*
提示。
创建标签
通过发出一个开始label
的命令:
label
将提示您输入卷名称。输入任何您想要的名称:
Enter new Volume name:MyVolume
然后选择备份应使用的池。我们将使用我们之前配置的“文件”池,输入“2”:
Select the Pool (1-3):2
此处报错:
[root@centos7-3 bacula]# bconsole
Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.2.13 (19 February 2013)
Enter a period to cancel a command.
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: myvolume
Defined Pools:
1: Default
2: File
3: Scratch
Select the Pool (1-3): 2
Connecting to Storage daemon File at 192.168.10.103:9103 ...
Failed to connect to Storage daemon.
Do not forget to mount the drive!!!
You have messages.
*messages
10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql_get.c:1030 sql_get.c:1030 query SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,Enabled,LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge FROM Media WHERE VolumeName='myvolume' failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=1 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=3 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql_get.c:1030 sql_get.c:1030 query SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,Enabled,LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge FROM Media WHERE VolumeName='myvolume' failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=1 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=3 failed:
Table 'bacula.Media' doesn't exist
10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
Table 'bacula.Media' doesn't exist
*
查看: vim /usr/libexec/bacula/make_mysql_tables
重新运行:/usr/libexec/bacula/make_mysql_tables结果好多表么有建出来
[root@centos7-3 bacula]# /usr/libexec/bacula/make_mysql_tables
Enter password:
ERROR 1050 (42S01) at line 7: Table 'Filename' already exists
ERROR 1050 (42S01) at line 14: Table 'Path' already exists
ERROR 1050 (42S01) at line 35: Table 'File' already exists
ERROR 1050 (42S01) at line 50: Table 'RestoreObject' already exists
ERROR 1050 (42S01) at line 76: Table 'MediaType' already exists
ERROR 1050 (42S01) at line 83: Table 'Storage' already exists
ERROR 1050 (42S01) at line 90: Table 'Device' already exists
ERROR 1067 (42000) at line 110: Invalid default value for 'SchedTime'
ERROR 1067 (42000) at line 143: Invalid default value for 'SchedTime'
ERROR 1050 (42S01) at line 175: Table 'Location' already exists
ERROR 1067 (42000) at line 183: Invalid default value for 'Date'
ERROR 1067 (42000) at line 197: Invalid default value for 'CreateTime'
ERROR 1050 (42S01) at line 205: Table 'JobMedia' already exists
ERROR 1067 (42000) at line 221: Invalid default value for 'FirstWritten'
ERROR 1050 (42S01) at line 270: Table 'Pool' already exists
ERROR 1050 (42S01) at line 301: Table 'Client' already exists
ERROR 1067 (42000) at line 312: Invalid default value for 'Time'
ERROR 1050 (42S01) at line 322: Table 'BaseFiles' already exists
ERROR 1061 (42000) at line 331: Duplicate key name 'basefiles_jobid_idx'
ERROR 1050 (42S01) at line 333: Table 'UnsavedFiles' already exists
ERROR 1050 (42S01) at line 343: Table 'Counters' already exists
ERROR 1050 (42S01) at line 352: Table 'CDImages' already exists
ERROR 1050 (42S01) at line 358: Table 'Status' already exists
ERROR 1062 (23000) at line 365: Duplicate entry 'C' for key 'PRIMARY'
ERROR 1050 (42S01) at line 388: Table 'PathHierarchy' already exists
ERROR 1061 (42000) at line 395: Duplicate key name 'pathhierarchy_ppathid'
ERROR 1050 (42S01) at line 398: Table 'PathVisibility' already exists
ERROR 1061 (42000) at line 406: Duplicate key name 'pathvisibility_jobid'
ERROR 1050 (42S01) at line 409: Table 'Version' already exists
Creation of Bacula MySQL tables succeeded.
暂时无法解决,请大家指导!
手动运行备份作业
Bacula现在知道我们要如何为我们的备份写入数据。我们现在可以运行备份来测试它是否正常工作:
run
系统将提示您选择要运行的作业。我们要运行“BackupLocalFiles”作业,因此在提示符处输入“1”:
Select Job resource (1-3):1
在“运行备份作业”确认提示下,查看详细信息,然后输入“yes”运行作业:
yes
检查消息和状态
运行一个工作后,Bacula会告诉你你有消息。消息是通过运行作业生成的。 键入以下内容检查消息:
messages
消息应该说“找不到先前的完全备份作业记录”,并且备份作业已启动。如果有任何错误,有什么问题,他们应该给你一个提示,为什么工作没有运行。 另一种查看作业状态的方法是检查Director的状态。为此,请在bconsole提示符处输入此命令:
status director
如果一切正常,您应该看到您的作业正在运行。这样的东西:
Output — status director (Running Jobs)Running Jobs:
Console connected at 09-Apr-15 12:16
JobId Level Name Status
======================================================================
3 Full BackupLocalFiles.2015-04-09_12.31.41_06 is running
====
作业完成后,它将移动到状态报告的“终止的作业”部分,如下所示:
Output — status director (Terminated Jobs)Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
3 Full 161,124 877.5 M OK 09-Apr-15 12:34 BackupLocalFiles
“OK”状态表示备份作业没有任何问题。恭喜!您有Bacula服务器的“完整集”的备份。 下一步是测试还原作业。
测试恢复作业
现在已经创建了一个备份,重要的是检查它是否可以正确恢复。该restore
命令将允许我们恢复已备份的文件。
运行还原所有作业
为了演示,我们将恢复上次备份中的所有文件:
restore all
将出现一个选择菜单,其中有许多不同的选项,用于标识要还原哪个备份集。由于我们只有一个备份,让我们选择最近的备份 - 选择选项5:
Select item (1-13):5
因为只有一个客户端,Bacula服务器,它会自动被选中。 下一个提示将询问您要使用哪个FileSet。选择“Full Set”,应为2:
Select FileSet resource (1-2):2
这将使您进入具有所备份的整个目录结构的虚拟文件树。这个类shell接口允许简单的命令来标记和取消标记要恢复的文件。 因为我们指定我们想要“还原所有”,每个备份的文件已经标记为还原。标记的文件是由领先的表示*
字符。 如果要调整选择,可以使用“ls”和“cd”命令导航和列出文件,使用“mark”标记要恢复的文件,并取消标记具有“unmark”的文件。通过在控制台中输入“help”可以获得完整的命令列表。 完成恢复选择后,请键入以下内容继续:
done
确认要运行还原作业:
OK to run? (yes/mod/no):yes
检查消息和状态
与备份作业一样,应在运行还原作业后检查消息和Director状态。 键入以下内容检查消息:
messages
应该有一条消息表明还原作业已启动或已通过“恢复确定”状态终止。如果有任何错误,有什么问题,他们应该给你一个提示,为什么工作没有运行。 同样,检查Director状态是一个很好的方式来查看恢复作业的状态:
status director
当你与恢复完成后,键入exit
离开Bacula的控制台:
exit
验证恢复
要验证还原作业实际还原选定的文件,你可以看看在/bacula/restore
目录(这是在Director配置了“RestoreLocalFiles”的工作定义):
sudo ls -la /bacula/restore
您应该在根文件系统中看到已恢复的文件副本,但不包括在“RestoreLocalFiles”作业的“排除”部分中列出的文件和目录。如果您尝试从数据丢失中恢复,您可以将恢复的文件复制到其相应的位置。
删除已恢复的文件
您可能需要删除已恢复的文件以释放磁盘空间。为此,请使用以下命令:
sudo -u root bash -c "rm -rf /bacula/restore/*"
请注意,您必须先运行此rm
命令,作为根,因为很多恢复的文件属于root。
结论
bacula备份终端操作bconsole指令
1.list命令列出各种备份状态信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
list Jobs #列出所有备份记录状态
list jobid=2 #列出jobid等于2有状态信息
list Job=t3_full #列出Job名称等于t3_full的任务信息
list jobname=t3_full #列出Job名称等于t3_full的任务信息
list joblog jobid=78 #列出jobid=78的详细备份日志信息
list jobmedia jobid=78 #列出jobid=78的状态信息与所在Volume信息
list files jobid=78 #列出jobid=78的状态信息与所备份的数据信息
list clients #列出备份的客户端
list jobtotals #列出所有作业任务使用的空间大小
list media pool=dbpool #查看dbpool属性的media
list Volume Pool=dbpool #查看dbpool属性的Volume
list pool #查看定义的dbpool属性
llist pool #查看定义的dbpool属性(更详细)
|
2.show查看配置信息
1
2
3
|
show Job=t3_full #查看Job名称等于t3_full的配置信息
show pools #查看池的信息
show pools=dbpool #查看dbpool池的信息
|
3.status当着状态信息
1
2
|
status #查看状态信息
status client=t3-fd #客户端名称t3-fd的状态信息
|
4.run执行job任务
1
2
|
run #进入交互模式操作
run job=t3_full yes #手动执行job为t3_full任务作业
|
5.delete删除备份
1
2
|
delete JobId=79 #删除jobid等于79的备份
list JobId=79 #查看就没有这个备份包了,但在status中还是会出这个,实际存储中空间并没有减小.
|
6.估算下这个备份有多少文件,需要多大容量.
1
2
|
estimate job=t3_full listing client=t3-fd
#作业任务t3_full,客户端t3-fd
|
7.特殊的几个命令:
1
2
3
4
5
6
|
.jobs #查看定义的job作业任务名称
.clients #查看定义的客户端名称
.filesets #查看定义的备份资源FS的名称
.msgs #查看定义的日志消息记录的名称
.pools #查看定义的pool池属性名称
.storage #查看定义的storage数据的存储方式的名称
|
8.在字符界面还可以直接这么来用:
1
|
printf "list clients\r\nquit" | /opt/bacula/sbin/bconsole
|