如何使用 Bacula 设置备份

Bacula 是一款跨平台的客户端-服务器开源备份软件,使您能够备份文件、目录、数据库、邮件服务器数据(Postfix、Exim、Sendmail、Dovecot)、系统映像和整个作系统。

在本指南中,我们将引导您完成在 Linux 上安装和配置 Bacula 的过程,以及创建备份和恢复用户数据。

要开始使用 Bacula,您需要运行任何 Linux 发行版的服务器或虚拟机。在本教程中,我们将使用 Hostman 的云服务器和 Debian 12。

巴库拉建筑

Bacula 的架构由以下组件组成:

董事(Bacula Director)

负责管理所有备份、恢复和验证作的核心组件。控制器调度作业,向其他组件发送命令,并将信息写入数据库。

存储守护进程 (Bacula Storage)

处理与磁盘、云存储等存储设备的通信。存储守护程序从文件守护程序接收数据并将其写入配置的存储介质。

文件守护程序(Bacula 文件)

安装在客户端计算机上以执行实际备份作的代理。

目录

Bacula 用于存储有关已完成作业的信息的数据库(MySQL、PostgreSQL 或 SQLite),例如备份元数据、文件列表和恢复历史记录。

控制台(Bacula Console,bconsole)

用于与 Bacula 交互的命令行实用程序。控制台允许管理员通过 CLI 控制控制器。还提供 Bacula Web 和 Baculum 等 GUI 工具。

显示器(可选)

用于监控 Bacula 系统状态的组件。它跟踪作业状态、守护程序状态和存储设备状况。

创建用于备份的测试数据

让我们创建一些测试文件以用于备份。

创建一个测试目录并导航到其中:

 
 
mkdir /root/test_backups && cd /root/test_backups

现在创建六个连续文件:

 
 
touch file{1..6}.txt

此外,提前创建一个目录来存储恢复的文件:

 
 
mkdir /root/restored-files

安装 Bacula

在本教程中,我们将在单个服务器上安装所有 Bacula 组件。但是,Bacula 还支持分布式设置,其中 Director、Storage Daemon、Client 和数据库等组件可以安装在单独的服务器上。这种分散式设置适用于备份多个系统而不会使单个服务器过载。

我们将使用 Debian 12 并安装 PostgreSQL(版本 15)作为后端数据库。

更新包索引并安装 Bacula(服务器和客户端组件):

 
 
apt update && apt -y install bacula-server bacula-client

在此过程中也将安装 PostgreSQL 15。

安装过程中:

  • 当提示:“使用 dbconfig-common 为 bacula-director-pgsql 配置数据库?

0218df50 951a 42b8 A101 Ff85aad736c1.png

  • 当要求选择数据库主机时,请选择 localhost,因为我们将所有内容安装在一台服务器上。

A161e20b 7f7b 4e95 9ce3 281f9405a6a9.png

  • 当提示:“PostgreSQL 应用程序密码 bacula-director-pgsql”时,为 Bacula 数据库设置密码。

7a341b1f 69c8 424e 972e C03758fc1b0e.png

请勿将此字段留空,否则将生成随机密码。

  • 当要求确认时,请重新输入密码。

3822e6ec 984d 4734 A93b 82d475bd07d1.png

然后安装将正常继续。

安装完成后,验证 Bacula 组件和 PostgreSQL 的状态。

检查 Bacula Director 的状态:

 
 
systemctl status bacula-director

检查存储守护进程:

 
 
systemctl status bacula-sd

检查文件守护程序:

 
 
systemctl status bacula-fd

检查 PostgreSQL:

 
 
systemctl status postgresql

如果所有组件都显示状态为 ,则 Bacula 已成功安装并正在运行。active

Bacula 配置

Bacula 是通过编辑程序组件的配置文件来配置的。默认情况下,所有 Bacula 配置文件都位于该目录中。/etc/bacula

929ce894 32a0 4470 B052 C39e57c232c2.png

接下来,我们将单独配置每个 Bacula 组件。

配置 Bacula Director

使用任何文本编辑器,打开配置文件进行编辑:bacula-dir.conf

 
 
nano /etc/bacula/bacula-dir.conf

让我们从块开始,它设置了 Director 组件的主要配置参数:Director

 
 
Director { Name = 4142939-bi08079-dir DIRport = 9101 QueryFile = "/etc/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/run/bacula" Maximum Concurrent Jobs = 20 Password = "ohzb29XNWSFISd6qN6fG2urERzxOl9w68" Messages = Daemon DirAddress = 127.0.0.1 }

参数说明:

  • Name:Director 组件的名称。这是一个唯一标识符,用于与其他组件(如文件守护进程和存储守护进程)连接。默认情况下,它包括服务器的主机名和后缀。例:。-dir4142939-bi08079-dir

  • DIRport:Bacula Director 侦听来自管理控制台 (bconsole) 的传入连接的端口。默认值为 。9101

  • QueryFile:用于在数据库上运行查询的 SQL 脚本文件的路径。它包含用于作业管理、验证、数据恢复等的预定义 SQL 查询。默认值:。/etc/bacula/scripts/query.sql

  • WorkingDirectory:Bacula Director 在作业执行期间临时保存文件的工作目录。

  • PidDirectory:控制器保存其 PID 文件(进程标识符)的目录。这用于跟踪进程是否正在运行。

  • Maximum Concurrent Jobs:可同时运行的最大作业数。默认值为 。20

  • Password:用于向 Director 对管理控制台 (bconsole) 进行身份验证的密码。必须与控制台配置中指定的匹配。

  • Messages:指定消息资源的名称,用于确定如何处理消息(错误、警告、事件)。常用值:、、。DaemonStandardCustom

  • DirAddress:Director 监听的 IP 地址。这可以用于本地连接或外部 IP。127.0.0.1

目录配置

默认情况下,Bacula 在同一主机上带有自己的 PostgreSQL 实例,在这种情况下,数据库连接设置不需要更改。但是,如果要单独部署数据库(建议用于生产环境),则必须在块中指定地址、用户名和密码:Catalog

 
 
Catalog { Name = MyCatalog dbname = "bacula"; DB Address = "localhost"; dbuser = "bacula"; dbpassword = "StrongPassword4747563" }

7e112a31 0a15 4470 Bece 04b49c53691b.png

参数说明:

  • dbname:Bacula 使用的数据库的名称(默认值为 )。数据库必须已经存在(单独部署时)。bacula

  • DB Address:部署 DBMS 的主机地址。使用 IP 或域名。对于本地设置:或 。localhost127.0.0.1

  • dbuser:Bacula 将用于连接到数据库的用户。

  • dbpassword:指定数据库用户的密码。必须预先配置。

恢复作业配置

找到名为 的块 ,负责文件恢复。设置参数以指定保存恢复文件的目录。之前,我们创建了 ,我们将在这里使用它:JobRestoreFilesWhere/root/restored-files

 
 
Job { Name = "RestoreFiles" Type = Restore Client=4244027-bi08079-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 = /root/restored-files }

57bd6862 C03a 4c80 9c0f 1e3fa9dbd994.png

备份计划配置

接下来,我们设置定义何时创建备份的块。Schedule

我们创造:

  • 每周一 00:01 进行完整备份。
  • 每周日(第 2 至 5 周)23:05 进行差异备份。
  • 每天 23:00 的增量备份:
 
 
Schedule { Name = "WeeklyCycle" Run = Full 1st mon at 00:01 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sun at 23:00 }

D1bc1e2e 74eb 47f4 88fc 50a2a2e656e1.png

文件集配置

现在,我们指定将备份哪些文件和目录。这是在块中定义的。早些时候我们创建了六个文件。我们将指定该路径:FileSet/root/test_backups

 
 
FileSet { Name = "Full Set" Include { Options { signature = MD5 } File = /root/test_backups } }

参数说明:

  • Name:块的名称,用于配置中的标识。FileSet
  • Options:适用于“包括”下列出的所有文件的设置。
  • signature = MD5:指定用于验证文件完整性的校验和算法。MD5 生成 128 位哈希值来跟踪文件更改。

64c03e6b 0146 4ade Ac5d 0b98134eaf75.png

排除配置(可选)

该块用于指定不应备份的文件或目录。该块放置在定义中,并作用于通过 包含的文件。ExcludeFileSetInclude

 
 
Exclude { File = /var/lib/bacula ... }
池配置

该块定义了一组用于备份的卷(存储单元)。池有助于管理数据的存储、轮换和删除方式。Pool

 
 
Pool { Name = Default Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 7 days Maximum Volume Bytes = 10G Maximum Volumes = 2 }

参数说明:

  • Name:游泳池的名字,这里是 。Default
  • Pool Type:定义池的功能:
    • Backup:定期备份。
    • Archive:长期储存。
    • Cloning:数据复制。
  • Recycle:指示卷在不再需要卷后是否可以重复使用( 或 )。yesno
  • AutoPrune:启用自动清理过期卷。
  • Volume Retention:在卷上保留数据的时间(以天为单位)。7 天后,该卷将符合重复使用的条件。
  • Maximum Volume Bytes:卷的最大大小。如果超过 10 GB,则会创建一个新卷(如果允许)。
  • Maximum Volumes:限制池中的卷数。在这里,它是 。当达到限制时,旧卷将被回收(如果)。2Recycle = yes
验证配置并重新启动 Bacula

进行所有更改后,检查文件是否存在语法错误:bacula-dir.conf

 
 
/usr/sbin/bacula-dir -t -c /etc/bacula/bacula-dir.conf

如果命令输出为空,则没有语法错误。如果存在错误,输出将指定行号和错误描述。

重新启动 Bacula Director 服务:

 
 
systemctl restart bacula-director

配置 Bacula 存储

下一步是配置 Bacula 存储,备份文件将存储在其中。

使用任何文本编辑器,打开配置文件进行编辑:bacula-sd.conf

 
 
nano /etc/bacula/bacula-sd.conf

我们将从块开始,它定义了负责物理保存备份文件的存储守护进程:Storage

 
 
Storage { Name = 4149195-bi08079-sd SDPort = 9103 WorkingDirectory = "/var/lib/bacula" Pid Directory = "/run/bacula" Plugin Directory = "/usr/lib/bacula" Maximum Concurrent Jobs = 20 SDAddress = 127.0.0.1 }

以下是每个参数的含义:

  • Name:存储守护程序实例的名称,用于唯一标识它。
  • SDPort:存储守护程序侦听的端口号。默认值为 。9103
  • WorkingDirectory:临时文件的工作目录。违约:。/var/lib/bacula
  • Pid Directory:用于存储存储守护程序的 PID 文件(进程 ID)的目录。违约:。/run/bacula
  • Plugin Directory:Bacula 的存储守护程序插件所在的路径。这些插件可以提供额外的功能,例如加密或云集成。
  • Maximum Concurrent Jobs:存储守护程序可以同时处理的最大作业数。
  • SDAddress:存储守护程序可用的 IP 地址。这可以是 IP 或域名。由于在我们的例子中,Storage 守护进程与 Director 运行在同一台服务器上,因此我们使用 .localhost

下一个要配置的块是 ,它定义了将写入备份的存储设备。Device

设备可以是物理的(例如,磁带驱动器)或逻辑的(例如,磁盘上的目录)。对于测试,一个块就足够了。默认情况下,可以包含多个块,包括 — 一种模拟物理自动转换器(用于管理磁带或其他介质)的机制。它允许您管理多个虚拟卷(通常作为磁盘文件),就像磁带库中的真实磁带一样。Devicebacula-sd.confDeviceVirtual Autochanger

找到块并从参数中删除该值:AutochangerFileChgr1-Dev2Device

 
 
Autochanger { Name = FileChgr1 Device = FileChgr1-Dev1 Changer Command = "" Changer Device = /dev/null }

Cbcd432e 7603 43cc A453 Fe910d6add06.png

接下来,在下面的块中,在参数中指定我们之前为存储备份文件 () 而创建的目录的完整路径:Device/srv/backupArchive Device

 
 
Device { Name = FileChgr1-Dev1 Media Type = File1 Archive Device = /srv/backup LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 }

7c002890 0919 4b4a A1da 70317de2a43f.png

任何引用并应删除的块:FileChgr2FileChgr1-dev2

45494f14 1ac3 4b66 9325 D0bf06f6d8ea.png

参数说明:

  • Autochanger块:
    • Name:自动转换器的标识符(可以有多个)。
    • Device:链接到此自动转换器的设备名称 - 必须与块名称匹配。Device
    • Changer Command:用于管理转换器的脚本或命令。空值 () 表示不使用任何值,适用于虚拟转换器或简单设置。""
    • Changer Device:指绑定到自动转换器的设备,通常用于物理设备。
  • Device块:
    • Name:设备的标识符。
    • Media Type:与设备关联的媒体类型。必须与块媒体类型匹配。Pool
    • Archive Device:用于存储备份的设备或目录的完整路径; 在这种情况下。/srv/backup
    • LabelMedia:Bacula 是否应该自动标记新媒体。
    • Random Access:是否支持随机访问。
    • AutomaticMount:使用时是否自动安装设备。
    • RemovableMedia:指定介质是否可移动。
    • AlwaysOpen:设备是否应始终保持打开状态。
    • Maximum Concurrent Jobs:使用此设备同时执行的最大作业数。

由于我们之前指定了备份存储的目录,因此请创建它:

 
 
mkdir -p /srv/backup

将所有权设置为用户:bacula

 
 
chown bacula:bacula /srv/backup

接下来,检查配置文件中是否有语法错误:

 
 
/usr/sbin/bacula-sd -t -c /etc/bacula/bacula-sd.conf

如果没有语法错误,则输出将为空。否则,它将指示任何错误的行号和描述。

重新启动存储守护程序:

 
 
systemctl restart bacula-sd

创建备份

Bacula 中的备份是使用命令行工具创建的。启动实用程序:bconsole

 
 
bconsole

如果它成功连接到 Director 组件,它将显示 。1000 OK

在运行备份之前,您可以通过输入命令来检查所有组件的状态:

 
 
status

这将显示五个 Bacula 系统组件的列表。要检查它们,请输入 。6

3a083e2a F725 4888 A74d F04916aef01c.png

要启动备份,请输入以下命令:

 
 
run

8ae0bca2 5120 4e94 93cf D61addf848f1.png

从列表中,通过键入 来选择选项(您的客户端名称可能因以前的配置而异)。BackupClient11

选择该选项后,您将看到有关备份作的详细信息。

然后,系统会提示你三个选项:

  • yes— 开始备份过程;
  • mod— 开始前修改参数;
  • no- 取消备份。

07b80496 424f 4863 Ad05 B9af870458d8.png

如果您输入 ,您将能够编辑最多 9 个参数。mod

0da17284 9bd8 477b Bb13 58714a7a45f4.png

要继续备份,请键入 。yes

要查看所有备份和还原作业及其状态,请执行以下作:

 
 
list jobs

Db38902b Bc4d 41c0 9050 A4934dfcce6c.png

在我们的例子中,创建了作业 ID 为 1 的备份:

 
 
list jobid=1

803a23fa Df3b 4e4c Aca3 4250bc23c5f6.png

如果状态为 ,则备份成功。T

“已终止作业”列中的可能状态:

  • T(成功) — 作业已成功完成。
  • E(错误) — 作业以错误结束。
  • A(已取消)— 用户取消了作业。
  • F(致命)— 作业因严重错误而结束。
  • R(正在运行)→已终止 — 作业已完成(可能成功也可能未成功)。

您还可以通过日志文件监控备份活动和错误:

 
 
cat /var/log/bacula/bacula.log

备份完成后,文件将保存在指定的目录中。

 
 
file Vol-0001

2658cf99 4409 431e B989 935dbac470d6.png

从备份恢复文件

早些时候,我们备份了包含六个文件的目录。假设这些文件丢失或删除。让我们恢复它们:/root/test_backups.txt

启动 Bacula 控制台:

 
 
bconsole

开始恢复过程:

 
 
restore

您将看到 12 个可用的恢复选项。

Bd1ea76b 7a6a 4063 8d40 17288feb3f2b.png

我们将使用选项 3。类型。3

Fc131259 0663 4834 Aea3 2f9fcea28890.png

早些时候,我们使用作业 ID 1 进行备份。进入。1 

93119f19 C369 4af9 815a Db864b572c81.png

您将进入文件选择模式。由于我们的文件在目录中,因此导航到那里。root/test_backups

Ba432a23 629a 4b9e Ad7e 3fc2f2285605.png

所有以前保存的文件都应该可见。

要恢复整个目录,请向上一级:

 
 
cd ..

然后标记整个文件夹:test_backups

 
 
mark test_backups/

99f84ff3 F432 4bdd 943b A137fd64a56b.png

完成选择:

 
 
done

系统将显示最终摘要,显示将恢复哪些数据和目标目录(在我们的例子中为:)。/root/restored-files

06f2a9d4 Cdc2 4a2e 95d2 7b3e26cf5201.png

要开始恢复,请输入 。yes

F70754c6 508c 465e 8bc5 D2536446c5d2.png

最后,验证文件是否已成功恢复。

1994faaf 233d 4307 B370 34dc24e290d0.png

结论

我们现在已经回顾了客户端-服务器备份解决方案 Bacula 的安装和配置。Bacula 不仅限于备份常规文件,由于其插件支持,它还可以处理虚拟机、作系统映像等的备份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值