更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Linux系统上安装、配置和使用Bacula Backup的方法

在Linux系统上安装、配置和使用Bacula Backup的方法

更新时间:2023-02-06 07:53:17浏览次数:141+次

本文介绍如何在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的方法。