- 创建者: 虚拟的现实,上次更新者: 管理员,更新时间:11月 20, 2023 需要 13 分钟阅读时间
目的
指导开源备份软件Bacula的安装、配置及应用。
适用范围
适合重要服务器资源的数据备份操作。
定义
服务器端:指备份系统的配置中心和管理控制中心,也包括备份数据的存放位置。
客户端:指需要备份的服务器。
职责
网络工程师:负责该指南的更新、整理。
Bacula简介
Bacula是一款开源的跨平台企业级备份软件。它采用C/S架构,可以实现对数据备份、恢复及校验;支持完全备份、增量备份和差异备份;支持多种操作系统和文件系统(例如windows和linux系统);支持定时备份,无需人工干预;支持终端命令控制,更加灵活;支持正则表达式,可以对备份文件进行更严格的匹配;支持MD5和SHA1签名校验;支持压缩备份和断点续传功能。
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:备份信息元数据。用于记录系统运行的状态信息。
Bacula的恢复流程
通过上图可知,系统的恢复流程如下:
1、通过Console连接到Director端,开始恢复操作。
2、Director端从自己的Catalog中取出备份的记录信息,同时对存储端SD和客户端FD的任务进行协调。
3、客户端FD验证Director的操作许可,验证通过后连接到存储端SD。
4、客户端FD根据Director发出的请求去连接SD,将FD端的数据按恢复要求重新存储到SD端或FD端。
Bacula安装
系统环境
CentOS7最小化安装
主机名 | IP地址 | 系统版本 | 应用角色 |
Bacula-test | 192.168.17.100 | CentOS7 | Director、SD、Console |
192.168.17.98 | Windows10 | FD | |
Bacula-test | 192.168.17.100 | CentOS7 | FD |
系统更新
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean yum makecache yum update
禁用selinux
vim /etc/selinux/config
下载安装包
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
安装相关软件包
yum install gcc-c++ readline-devel zlib-devel lzo-devel libacl-devel mt-st mtx postfix libssl-dev mariadb-devel mariadb-server
编译安装
cd bacula ./configure --disable-conio --bindir=/usr/bin --sbindir=/usr/sbin {color} --with-scriptdir=/usr/libexec/bacula/ {color} --with-working-dir=/var/spool/bacula/ {color} --with-logdir=/var/log --enable-smartalloc --with-mysql {color} --with-hostname=192.168.17.100 --sysconfdir=/etc/bacula --with-systemd make make install make install-autostart
完成后检查相关文件和目录是否存在。可以参考编译的参数查找对应的文件和目录,如下图所示。
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;
Bacula配置
Bacula备份的主要配置项目存放在bacula-dir.conf文件中,该文件中的配置项包含以下内容。
- Jobdefs:默认执行任务
- Job:自定义一个备份或恢复任务
- Fileset:定义备份那些数据,不备份那些数据
- Schedule:定义备份时间策略
- Pool:定义供Job使用的池属性
- Client:定义要备份的主机地址
- Storange:定义数据的存储方式
- Messages:定义发送日子报告和记录日志的位置
各项目定义的名称会相互关联,如下图所示。
bacula-dir.conf配置
主控端的Director项:
1、Name和Console端Director项的Name一致;
2、Name要和介质端Director项的Name一致;
3、Name要和客户端Director项的Name一致;
4、Password项要和Console端的Password项的密码一致;
主控端的Storage项:
1、Device要和介质端Device项的Name一致;
2、MediaType要和介质端Device项的MediaType一致;
3、Password要和介质端Director项的Pasword一致;
主控端的Client项:
Password要和客户端Director项的Password一致;
vim /etc/bacula/bacula-dir.conf Director { #全局设置 Name = bacula-test-dir #名称要和Console端、SD端、FD端一致 DIRport = 9101 #启动的端口 QueryFile = "/usr/libexec/bacula/query.sql" WorkingDirectory = "/var/spool/bacula/" PidDirectory = "/var/run" Maximum Concurrent Jobs = 20 #同时执行的最大任务数量 Password = "u3R1MUpLlKodHFr4PiqGQMGJfaNfhiXb14ul6xcpBA8d" #密码和Console端一致 Messages = Daemon } JobDefs { #默认的任务设置 Name = "DefaultJob" #任务名称 Type = Backup #任务的类型,有备份、恢复、校验、管理等 Level = Incremental #增量备份,有差异、全备份 Client = bacula-test-fd #备份的客户端 FileSet = "Full Set" #选择客户端需要备份额目录及文件 Schedule = "WeeklyCycle" #备份周期 Storage = File1 #存储的方式 Messages = Standard Pool = File SpoolAttributes = yes Priority = 10 Write Bootstrap = "/var/spool/bacula/%c.bsr" #将作业记录写入文件 } Job { Name = "Backup-17.98" #定义一个备份任务 Type = Backup Level = Incremental Client = bacula-17-98 #需要备份的客户端 FileSet = "Windows" #需要备份的目录和文件 Schedule = "WeeklyCycle" Storage = File1 Messages = Standard Pool = File SpoolAttributes = yes Priority = 10 Write Bootstrap = "/var/spool/bacula/windows%c.bsr" } Job { Name = "BackupClient1" JobDefs = "DefaultJob" } Job { Name = "BackupCatalog" #定义一个元数据备份任务 JobDefs = "DefaultJob" Level = Full FileSet="Catalog" Schedule = "WeeklyCycleAfterBackup" RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog" RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup" Write Bootstrap = "/var/spool/bacula/%n.bsr" Priority = 11 } Job { Name = "RestoreFiles" #定义一个恢复任务 Type = Restore Client=bacula-test-fd FileSet="Full Set" Storage = File1 Pool = File Messages = Standard Where = /tmp/bacula-restores } FileSet { Name = "Full Set" #定义需要备份的目录及文件 Include { Options { signature = MD5 #采用MD5 Compression = GZIP #启用GZIP压缩 } File = /var/lib/mysql #需要备份的目录 } Exclude { #无需备份的目录和文件 File = /var/spool/bacula/ File = /tmp File = /proc File = /tmp File = /sys File = /.journal File = /.fsck } } FileSet { Name = "Windows" #定义一个新的需要备份的设置 Include { Options { signature = MD5 compression = GZIP IgnoreCase = yes } File = "D:/msdn" } } Schedule { Name = "WeeklyCycle" #定义备份周期 Run = Full 1st sun at 23:05 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sat at 23:05 } Schedule { Name = "WeeklyCycleAfterBackup" #另一种不同的备份周期 Run = Full sun-sat at 23:10 } FileSet { Name = "Catalog" #定义需要备份的元数据 Include { Options { signature = MD5 } File = "/var/spool/bacula/bacula.sql" } } Client { Name = bacula-test-fd #定义需要备份的客户端 Address = 192.168.17.100 FDPort = 9102 Catalog = MyCatalog Password = "nb5dURhiVT3RPsHkFvXetau9LrnL/FhY/ORWkFOTPamT" #密码要和FD端的一致 File Retention = 30 days #定义文件记录在 Catalog 数据库中的保留时间,不影响已存档的备份文件 Job Retention = 3 months #定义任务记录在 Catalog 数据库中的保留时间,不影响已存档的备份文件 AutoPrune = yes #自动修剪 } Client { Name = bacula-17-98 Address = 192.168.17.98 FDPort = 9102 Catalog = MyCatalog Password = "nb5dURhiVT3RPsHkFvXetau9LrnL/FhY/ORWkFOTPamT" File Retention = 30 days Job Retention = 3 months AutoPrune = yes } Storage { Name = File1 Address = 192.168.17.100 #存储端的地址 SDPort = 9103 Password = "qy5ILHHJNXLCUWGudeC1ke1hPioBo+ye2bUBU5ncxADg" Device = FileChgr1 #指定存储的设备。引用存储端配置文件的 Device{}的 Name 值 Media Type = File1 #与存储端配置文件的 Device{}的 Media Type 值相同 Maximum Concurrent Jobs = 10 #定义此存储端所允许同时进行的任务最大数量 } Storage { Name = File2 Address = 192.168.17.100 SDPort = 9103 Password = "qy5ILHHJNXLCUWGudeC1ke1hPioBo+ye2bUBU5ncxADg" Device = FileChgr2 Media Type = File2 Maximum Concurrent Jobs = 10 } Catalog { Name = MyCatalog #指定 Catalog{}名称 dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula" } Messages { Name = Standard #定义日志 append = "/var/log/bacula.log" = all, !skipped append = "/var/log/bacula.err.log" = error,warning,fatal catalog = all } Messages { Name = Daemon append = "/var/log/bacula.log" = all, !skipped append = "/var/log/bacula.err.log" = error,warning,fatal } Pool { Name = Default Pool Type = Backup Recycle = yes #是否重复使用 Volumes AutoPrune = yes #自动清理 Maximum Volume Jobs = 1 Volume Retention = 15 days #卷的保留时间 Maximum Volume Bytes = 5G #Volume容量 Maximum Volumes = 100 #Volumes数量l Label Format = "db-${Year}${Month/2/0/r}${Day/2/0/r}-id${JobId}" #卷命名方式 } Pool { Name = File Pool Type = Backup Recycle = yes AutoPrune = yes Maximum Volume Jobs = 1 Volume Retention = 15 days Maximum Volume Bytes = 50G Maximum Volumes = 100 Label Format = "db-${Year}${Month/2/0/r}${Day/2/0/r}-id${JobId}" } # Scratch pool definition Pool { Name = Scratch Pool Type = Backup } Console { Name = bacula-test-mon Password = "fX2cKUkN2RSiLTkeQd5LCPDDw61PzGkuit2+7DvWxVG1" CommandACL = status, .status }
bacula-sd.conf配置
存储端的配置文件是bacula-sd.conf,它主要负责定义备份文件的存放方式和地址,具体的情况如下所示:
Storage { #定义存储端名称 Name = bacula-test-sd SDPort = 9103 WorkingDirectory = "/var/spool/bacula/" Pid Directory = "/var/run" Maximum Concurrent Jobs = 20 } Director { Name = bacula-test-dir Password = "qy5ILHHJNXLCUWGudeC1ke1hPioBo+ye2bUBU5ncxADg" } Director { Name = bacula-test-mon Password = "7zSF0B9viPBuwkKpPC2PoJw1qxOEuvCxbWDxzXc1cHk9" Monitor = yes } Autochanger { #是否自动更换设备 Name = FileChgr1 Device = FileChgr1-Dev1, FileChgr1-Dev2 #定义需更换的设备 Changer Command = "" Changer Device = /dev/null } Device { Name = FileChgr1-Dev1 Media Type = File1 #类型是文件(可以是DVD,磁带) Archive Device = /tmp #存放位置 LabelMedia = yes; #媒体标注 Random Access = Yes; AutomaticMount = yes; #自动挂载 RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 } Device { Name = FileChgr1-Dev2 Media Type = File1 Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 } Autochanger { Name = FileChgr2 Device = FileChgr2-Dev1, FileChgr2-Dev2 Changer Command = "" Changer Device = /dev/null } Device { Name = FileChgr2-Dev1 Media Type = File2 Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 } Device { Name = FileChgr2-Dev2 Media Type = File2 Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 } Messages { Name = Standard director = bacula-test-dir = all }
Bacula备份、恢复测试
备份操作
运行备份操作
[root@bacula-test /tmp]bconsole #进入console界面
Connecting to Director 192.168.17.100:9101
1000 OK: 102 bacula-test-dir Version: 7.4.1 (15 February 2016)
Enter a period to cancel a command.
*label #标签状态
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
The defined Storage resources are:
1: File1
2: File2
Select Storage resource (1-2): 1 #定义的存储资源
Enter new Volume name: vol-20160601
Defined Pools:
1: Default
2: File
3: Scratch
Select the Pool (1-3): 2 #文件类型
Connecting to Storage daemon File1 at 192.168.17.100:9103 ...
Sending label command for Volume "vol-20160601" Slot 0 ...
3000 OK label. VolBytes=209 VolABytes=0 VolType=1 Volume="vol-20160601" Device="FileChgr1-Dev1" (/tmp)
Catalog record for Volume "vol-20160601", Slot 0 successfully created.
Requesting to mount FileChgr1 ...
3906 File device ""FileChgr1-Dev1" (/tmp)" is always mounted.
*run #执行备份操作
A job name must be specified.
The defined Job resources are:
1: Backup-17.98
2: BackupClient1
3: BackupCatalog
4: RestoreFiles
Select Job resource (1-4): 3 #选择需要备份的客户端
Run Backup job
JobName: BackupCatalog
Level: Full
Client: bacula-test-fd
FileSet: Catalog
Pool: File (From Job resource)
Storage: File1 (From Job resource)
When: 2016-06-01 15:59:49
Priority: 11
OK to run? (yes/mod/no): yes #同意备份
Job queued. JobId=37
*messages
You have no messages.
*exit
恢复操作
#bconsole
Connecting to Director 192.168.17.100:9101
1000 OK: 102 bacula-test-dir Version: 7.4.1 (15 February 2016)
Enter a period to cancel a command.
*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
Defined Clients:
1: bacula-17-98
2: bacula-test-fd
Select the Client (1-2): 2
The defined FileSet resources are:
1: Catalog
2: Full Set
Select FileSet resource (1-2): 2
------------------------------------------------------------------+
JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |
------------------------------------------------------------------+
1 | F | 126 | 731,496 | 2016-05-18 16:02:32 | linux-file1 |
29 | D | 5 | 991,369 | 2016-05-29 23:05:04 | db-2016-05-29-id29 |
32 | I | 2 | 1,000,660 | 2016-05-30 23:05:04 | db-2016-05-30-id32 |
35 | I | 2 | 1,038,878 | 2016-05-31 23:05:05 | db-2016-05-31-id35 |
------------------------------------------------------------------+
You have selected the following JobIds: 1,29,32,35
Building directory tree for JobId(s) 1,29,32,35 ... ++++++++++++++++++++++++++++++++++++++++
122 files inserted into the tree.
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: /
ls
var/
$ mark var
126 files marked.
$ lsmark
*var/
*lib/
*mysql/
*aria_log.00000001
*aria_log_control
*bacula/
*BaseFiles.frm
*CDImages.frm
*Client.frm
done
Bootstrap records written to /var/spool/bacula//bacula-test-dir.restore.1.bsr
Bootstrap records written to /var/spool/bacula//bacula-test-dir.restore.1.bsr
The Job will require the following (*=>InChanger):
Volume(s) Storage(s) SD Device(s)
===========================================================================
linux-file1 File1 FileChgr1
db-2016-05-29-id29 File1 FileChgr1
db-2016-05-31-id35 File1 FileChgr1
Volumes marked with "*" are in the Autochanger.
126 files selected to be restored.
Using Catalog "MyCatalog"
Run Restore job
JobName: RestoreFiles
Bootstrap: /var/spool/bacula//bacula-test-dir.restore.1.bsr
Where: /tmp/bacula-restores
Replace: Always
FileSet: Full Set
Backup Client: bacula-test-fd
Restore Client: bacula-test-fd
Storage: File1
When: 2016-06-01 16:08:14
Catalog: MyCatalog
Priority: 10
Plugin Options:
OK to run? (yes/mod/no): yes
Job queued. JobId=38
*messages
You have no messages.
iscsi网络存储
配置FreeNAS
考虑专业的磁盘柜价格不菲,而使用服务器的方式一方面磁盘容量有限,另一方面IO的性能也很难保障。FreeNAS是一套免费的NAS服务器,它能将一部普通PC变成网络存储服务器。用户可通过Windows、Macs、FTP、SSH 及网络文件系统 (NFS) 来访问存储服务器。
我们通过它来组建符合企业使用的备份存储设备,该系统具体的安装步骤可参考相关资源。这里通过启用iscsi功能实现网络备份存储,相关设置如下图。
配置iscsi客户端
iSCSI的服务器端已经在FreeNAS上完成配置,接下来需要在linux系统上完成客户端的配置,实现在客户端对网络存储的挂载。
首先安装相关的系统组件并完成配置文件的修改。
yum -y install iscsi-initiator-utils vi /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2016-06.com.redhat:82367514497d #客户端的标记
接下来修改主要的配置文件。
vi /etc/iscsi/iscsid.conf node.session.auth.authmethod = CHAP #根据freenas的设置修改 node.session.auth.username = myj.5.199 node.session.auth.password = testtesttest discovery.sendtargets.auth.authmethod = CHAP #根据freenas的设置修改 discovery.sendtargets.auth.username = backup.myj discovery.sendtargets.auth.password = testtesttest
完成设置后通过以下指令查看配置和连接情况。
iscsiadm -m discovery -t sendtargets -p 192.168.5.199 iscsiadm -m node -o show
配置开机自动挂载
完成iSCSI的配置后,接下来配置开机自动挂载及相应的服务自动启动设定,具体系统分区操作略。
systemctl enable iscsid.service iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:backu-10ttarget -p 192.168.5.199 --op update -n node.startup -v automatic Ls -l /dev/disk/by-uuid Blkid /dev/sdc1
备份存储设置
配置bacula-dir.conf
JobDefs { Name = "DefaultJob" Type = Backup Level = Incremental Client = bak-192.168.0.97 FileSet = "Windows" Schedule = "WeeklyCycle" Storage = windows-file Messages = Standard Pool = Default Full Backup Pool = full-pool Incremental Backup Pool = inc-pool Differential Backup Pool = diff-pool SpoolAttributes = yes Priority = 10 Write Bootstrap = "/var/spool/bacula/%h.bsr" } Job { Name = "bak-192.168.0.97" JobDefs = "DefaultJob" } Job{ Name = "bak-192.168.5.86" Type = Backup Level = Incremental Client = bacula-fd FileSet = "Bacula Set" Schedule = "WeeklyCycle" Storage = linux-file Messages = Standard Pool = Default Full Backup Pool = full-pool Incremental Backup Pool = inc-pool Differential Backup Pool = diff-pool SpoolAttributes = yes Priority = 10 Write Bootstrap = "/var/spool/bacula/%h.bsr" } Job { Name = "BackupCatalog" JobDefs = "DefaultJob" Level = Full FileSet="Catalog" Schedule = "WeeklyCycleAfterBackup" # This creates an ASCII copy of the catalog # Arguments to make_catalog_backup.pl are: # make_catalog_backup.pl <catalog-name> RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog" # This deletes the copy of the catalog RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup" Write Bootstrap = "/var/spool/bacula/%n.bsr" Priority = 11 # run after main backup } Job { Name = "RestoreFiles" Type = Restore Client=bacula-fd FileSet="Bacula Set" Storage = linux-file Pool = Default Full Backup Pool = full-pool Incremental Backup Pool = inc-pool Differential Backup Pool = diff-pool Messages = Standard Where = /tmp/bacula-restores } FileSet { Name = "Windows" Include { Options { signature = MD5 compression = GZIP IgnoreCase = yes } File = "e:/datatbak" } } FileSet { Name = "Bacula Set" Include { Options { signature = MD5 Compression = GZIP } File = /var/lib/mysql } Exclude { File = /var/spool/bacula File = /tmp File = /proc File = /tmp File = /sys File = /.journal File = /.fsck } } Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 23:05 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sat at 23:05 } Schedule { Name = "WeeklyCycleAfterBackup" Run = Full sun-sat at 23:10 } FileSet { Name = "Catalog" Include { Options { signature = MD5 } File = "/var/spool/bacula/bacula.sql" } } Client { Name = bak-192.168.0.97 Address = 192.168.0.97 FDPort = 9102 Catalog = MyCatalog Password = "IYN0eZTw2BrRcA/MNGCwGHb9OrHDRykMMF8jSxtA7zUF" # password for FileDaemon File Retention = 15 days # 60 days Job Retention = 1 months # six months AutoPrune = yes # Prune expired Jobs/Files } Storage { Name = windows-file # Do not use "localhost" here Address = 192.168.5.86 # N.B. Use a fully qualified name here SDPort = 9103 Password = "4UMQ2b+Il8HiPxXotZLCzUhNfXasKRFlVOeOFNN0m5XS" Device = FileChgr-windows Media Type = File Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time } Storage { Name = linux-file # Do not use "localhost" here Address = 192.168.5.86 # N.B. Use a fully qualified name here SDPort = 9103 Password = "4UMQ2b+Il8HiPxXotZLCzUhNfXasKRFlVOeOFNN0m5XS" Device = FileChgr-linux Media Type = File Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time } Catalog { Name = MyCatalog dbname = "bacula"; dbuser = "bacula"; dbpassword = "www.myj123.com" } Pool { Name = Default Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 30 days # one year Maximum Volume Bytes = 150G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool } Pool { Name = File Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 30 days # one year Maximum Volume Bytes = 150G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool Label Format = "Vol-" # Auto label } pool{ Name = full-pool Pool Type = Backup Recycle = yes AutoPrune = yes Maximum Volume Jobs = 1 Volume Retention = 15 days Maximum Volumes = 30 Label Format = "Full-${Year}${Month/2/0/r}${Day/2/0/r}-id${JobId}" } pool{ Name = diff-pool Pool Type = Backup Recycle = yes AutoPrune = yes Maximum Volume Jobs = 1 Volume Retention = 30 days Maximum Volumes = 60 Label Format = "Diff-{Year}${Month/2/0/r}${Day/2/0/r}-id${JobId}" } pool{ Name = inc-pool Pool Type = Backup Recycle = yes AutoPrune = yes Maximum Volume Jobs = 6 Volume Retention = 20 days Maximum Volumes = 150 Maximum Volume Bytes = 200G Label Format = "Inc-${Year}${Month/2/0/r}${Day/2/0/r}-id${JobId}" } # Scratch pool definition Pool { Name = Scratch Pool Type = Backup }
配置bacula-sd.conf
Device { Name = FileChgr-windows Media Type = File Archive Device = /backup/windows 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 = FileChgr-linux Media Type = File Archive Device = /backup/linux 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 }
图形界面配置
bacula默认的安装是字符界面(其实也有基于QT环境的GUI界面,考虑性能和所依赖的安装包太多,没有使用)。第三方的工具有基于WEB的界面报告,基本上可以满足日常需要。
安装相关组件
yum install httpd php php-gd php-gettext php-mysql php-pdo systemctl enable httpd.service systemctl start httpd.service firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload cd /var/www/html curl -O http://www.bacula-web.org/files/bacula-web.org/downloads/bacula-web-latest.tgz mkdir -v /var/www/html/bacula tar -xzf bacula-web-latest.tgz -C /var/www/html/bacula chown -Rv apache: /var/www/html/bacula cd application/config cp -v config.php.sample config.php chown -v apache: config.php
配置文件
vi config.php $config['language'] = 'en_EN'; $config[0]['label'] = 'Backup Server'; $config[0]['host'] = 'localhost'; $config[0]['login'] = 'bacula'; $config[0]['password'] = 'verystrongpassword'; $config[0]['db_name'] = 'bacula'; $config[0]['db_type'] = 'mysql'; $config[0]['db_port'] = '3306'; vi /etc/php.ini date.timezone = Asia/Shanghai vim /etc/httpd/conf.d/bacula.conf
测试
- 无标签
添加评论