更新时间:2023-02-06 07:53:17浏览次数:924+次
本文介绍如何在Linux系统上安装、配置和使用Bacula Backup的方法,将以Rocky Linux 8、AlmaLinux 8发行版为例说明。
简介
Bacula可以定义为一组用于管理网络上数据的备份、恢复和验证的程序。此开源工具允许创建备份并恢复保存在磁盘和备份磁带等介质上的数据。
Bacula不仅可以在一台计算机上运行,还可以在数百台相连的设备上运行。Bacula服务器包含以下组件:
Bacula Director:这是存储和文件守护程序执行的备份和存储操作的基于策略的配置中心。它还计划数据备份和恢复。
Storage Daemon:此守护程序读取数据并将数据写入物理备份介质/卷。
Catalog:这是维护备份文件数据库的服务。数据库可能是PostgreSQL或MySQL。
Bacula File daemon:它安装在各个客户端上。它用于传输要存储的客户端数据。这个守护程序基本上知道存储位置和要备份的数据类型。
Bacula Console:这是一个Bacula命令行,您可以在其中进行备份并与控制器交互。
下图是Bacula架构的示意图:
与Bacula相关的功能包括:
具有许多平台的客户端支持,包括Linux、Windows、Mac和Unix系统。
支持自动备份、恢复和归档操作。
基于web的基础架构集中管理。
支持1000个客户端和PB数据的分布式可扩展体系结构。
易于安装,配置少。
通过压缩和重复数据消除减少数据。
为Oracle、MySQL、PostgreSQL、SAP提供插件。
支持磁盘、VTL、磁带、便携式介质等存储设备。
提供无LAN备份、SAN支持、NDMP、裸机恢复。
安装、配置和使用Bacula Backup的方法
步骤1、准备服务器
首先将服务器上的所有软件包更新为最新的可用版本:
sudo yum update
禁用SELinux,如下所示:
sudo setenforce 0
sudo sudo sed -i "s/enforcing/disabled/g" /etc/sysconfig/selinux
建议您在升级后重新启动服务器,以应用对内核所做的更改:
sudo reboot
步骤2、安装MariaDB
在本指南中,我们将使用MariaDB作为Bacula的数据库。使用以下命令在系统上安装MariaDB:
sudo yum install mariadb-server -y
安装后,启动并启用MariaDB:
sudo systemctl enable --now mariadb
使用root用户登录MariaDB:
sudo mysql -u root
为Bacula创建数据库:
create database bacula;
grant all privileges on bacula.* to bacula@'%' identified by 'Passw0rd';
flush privileges;
exit
可参考在Ubuntu 20.04上安装和配置MariaDB 10.6的方法:https://www.hmxthome.com/linux/4864.html
步骤3、安装Bacula
Bacula在默认的Rocky Linux 8、AlmaLinux 8软件包存储库中可用。这使得安装它非常容易。
以下命令可用于安装Bacula组件:
sudo dnf -y install bacula-director bacula-storage bacula-console bacula-client
步骤4、配置以能够使用Bacula
安装完所有组件后,继续进行配置。这里我们将配置Bacula数据库。由于我们使用MariaDB作为数据库,我们将对Bacula进行以下更改:
sudo alternatives --config libbaccats.so
继续并将数据库支持切换到MySQL,如下所示:
There 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数据库表:
sudo /usr/libexec/bacula/make_mysql_tables -u root
下面创建备份和还原目录。
Bacula需要备份和恢复文件的目录。为Bacula创建一个新目录,如下所示:
sudo mkdir -p /bacula/backup /bacula/restore
为位置设置正确的权限:
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula
Bacula director配置文件可以打开进行编辑,如下所示:
sudo vim /etc/bacula/bacula-dir.conf
在这里,您需要为Bacula Director进行多种配置,例如:
1].设置侦听地址
在文件中,为Director添加侦听地址127.0.0.1:
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 = 20
Password = "@@DIR_PASSWORD@@" # Console password
Messages = Daemon
DirAddress = 127.0.0.1
}
2].继续并配置备份和还原本地作业
Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}
Job {
Name = "RestoreLocalFiles"
Type = Restore
Client=bacula-fd
FileSet="Full Set"
Storage = File1
Pool = Default
Messages = Standard
Where = /bacula/restore
}
在文件中配置Bacula控制器文件集。找到FileSet部分并进行以下更改:
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
#
# By default this is defined to point to the Bacula binary
# directory to give a reasonable FileSet to backup to
# disk storage during initial testing.
#
File =/
}
Exclude {
File = /var/lib/bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /bacula
}
}
3].配置目录连接
这将在bacula director配置中承载到数据库的连接信息:
# Generic catalog service
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "Passw0rd"
}
保存文件并检查配置是否正常:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
如果未遇到任何错误,请转至存储守护程序配置。
步骤5、配置Bacula存储守护程序
打开Bacula Storage文件进行编辑:
sudo vim /etc/bacula/bacula-sd.conf
在设备下配置存储Devices并配置File1
# Define a Virtual autochanger
#
Autochanger {
....
Device {
Name = FileChgr1-Dev2
Media Type = File1
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服务:
sudo systemctl enable --now bacula-dir.service bacula-fd.service bacula-sd.service
检查服务状态:
systemctl status bacula-dir.service bacula-fd.service bacula-sd.service
输出:
此时,Bacula Director应该监听端口9101:
$ sudo ss -plunt|grep 9101
tcp LISTEN 0 50 127.0.0.1:9101 0.0.0.0:* users:(("bacula-dir",pid=38394,fd=9))
步骤6、连接Bacula控制台
现在使用以下命令连接到Bacula控制器:
sudo bconsole
样本输出:
运行job:
*run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
1: BackupLocalFiles
2: RestoreLocalFiles
3: BackupCatalog
4: RestoreFiles
Select Job resource (1-4): 1
按照以下步骤运行配置的备份/还原作业:
Run Backup job
JobName: BackupLocalFiles
Level: Incremental
Client: bacula-fd
FileSet: Full Set
Pool: File (From Job resource)
Storage: File1 (From Job resource)
When: 2023-02-05 07:53:21
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=1
You have messages.
显示作业的状态:
*status client
Automatically selected Client: bacula-fd
Running Jobs
用更多命令,例如:
## reload console
* reload
## show filesets
* show filesets
## show dir status
* status dir
## show client status
* status client
## show storage
* status storage
## show messages (show only one time per job)
* message
## show job per ID and wait to be finished
* wait jobid=1
## restore all > all files are market to restore
* restore all
## restore > manually mark/unmark files to restore
* restore
## if a restore fails you can re-try
* rerun jobid=1
步骤7、配置Bacula远程客户端以方便使用Bacula
Bacula远程客户端需要安装Bacula文件守护程序。可以从默认的软件包管理器安装:
##在Debian/Ubuntu上
sudo apt install bacula-client
##在RHEL/CentOS/Rocky Linux/Alma Linux上
sudo yum install bacula-client
在基于RHEL的系统上,禁用SELinux并允许端口9102通过防火墙:
sudo setenforce 0
sudo sudo sed -i "s/enforcing/disabled/g" /etc/sysconfig/selinux
sudo firewall-cmd --permanent --zone=public --add-port=9102/tcp
sudo firewall-cmd --reload
客户端也可以安装在Windows系统上。安装后,继续执行以下配置:
sudo vim /etc/bacula/bacula-fd.conf
将以下行添加到文件中。记住设置Bacula控制器密码、FD名称和IP:
Director {
Name = bacula-dir ##Enter the name of the server’s Bacula Director here
Password = "5sXAywtZfiNXNfl1M8poFdt9oU_GtHBSf" ## set the password to be used by the director to access the FD and copy it
}
...
FileDaemon { # this is me
Name = debian-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 192.168.205.4
}
检查文件并重新启动服务:
sudo bacula-fd -tc /etc/bacula/bacula-fd.conf
sudo systemctl restart bacula-fd.service
在Bacula服务器上,您需要添加如下客户端:
$ sudo vim /etc/bacula/bacula-dir.conf
.....
Client {
Name = debian-fd ##The file daemon name of the client
Address = 192.168.205.4
FDPort = 9102
Catalog = MyCatalog
Password = "5sXAywtZfiNXNfl1M8poFdt9oU_GtHBSf" # Paste here the value of the “Password” parameter in the “Director” section on the client
File Retention = 1 year
Job Retention = 1 year
AutoPrune = yes
}
您还可以为远程客户端创建一个作业目录,其中包含使用正确权限创建的目录/bacula/backup /bacula/restore:
FileSet {
Name = "RemoteFS"
Include {
Options {
signature = MD5
}
File = /bacula/backup
}
}
Pool {
Name = RemotePool
Pool Type = Backup
Label Format = "RM-" # New label for separating files in the backup storage from local backups
}
Job {
Name = "BackupRemoteFiles"
Client=debian-fd
JobDefs = "DefaultJob"
Enabled = yes
FileSet = "RemoteFS" # The name of recently added “FileSet’ section
}
Job {
Name = "RemoteRestore"
Type = Restore
Client= "debian-fd"
FileSet="Full Set"
Storage = File1
Pool = "RemotePool"
Messages = Standard
Where = /bacula/restore # Path to the folder that we created on the client for data restore
Bootstrap = "/var/lib/bacula/RemoteBackup.bsr"
}
保存文件,重新启动Bacula控制器:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
sudo systemctl restart bacula-dir.service
在远程系统上创建备份文件夹:
sudo mkdir -p /bacula/backup /bacula/restore
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula
在Bacula控制台上查看添加的客户端:
sudo bconsole
*status client
The defined Client resources are:
1: bacula-fd
2: debian-fd
Select Client (File daemon) resource (1-2): 2
样本输出:
至此,配置Bacula远程客户端完成。
结论
通过以上技术,我们可以掌握到在Linux上安装配置和使用Bacula Backup的方法。