在Ubuntu 14.04上安装Bacula服务器的方法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在Ubuntu 14.04上安装Bacula服务器的方法

简介

Bacula 是一个开源的网络备份解决方案,允许您创建备份并对计算机系统进行数据恢复。它非常灵活和强大,虽然配置略显繁琐,但适用于许多情况的备份。备份系统是大多数服务器基础设施中的重要组成部分,因为从数据丢失中恢复通常是灾难恢复计划的关键部分。

在本教程中,我们将向您展示如何在 Ubuntu 14.04 服务器上安装和配置 Bacula 的服务器组件。我们将配置 Bacula 执行每周作业,创建本地备份(即其自身主机的备份)。这本身并不是 Bacula 特别引人注目的用途,但它将为您提供创建其他服务器(即备份客户端)备份的良好起点。本系列的下一个教程将涵盖通过安装和配置 Bacula 客户端以及配置 Bacula 服务器来创建其他远程服务器的备份。

先决条件

您必须在 Ubuntu 14.04 服务器上拥有超级用户(sudo)访问权限。此外,服务器将需要足够的磁盘空间来存储您计划在任何给定时间保留的所有备份。

如果您使用 DigitalOcean,您应该在 Bacula 服务器和所有位于同一数据中心区域的客户端服务器上启用私有网络。这将允许您的服务器在执行备份时使用私有网络,从而减少网络开销。

我们将配置 Bacula 使用我们服务器的私有 FQDN,例如 bacula.private.example.com。如果您没有 DNS 设置,请使用相应的 IP 地址。如果您没有启用私有网络,请使用本教程中与相关服务器可达的网络连接信息(例如公共 IP 地址或 VPN 隧道)替换所有网络连接信息。

让我们首先来看一下 Bacula 组件的概述。

Bacula 组件概述

尽管 Bacula 由多个软件组件组成,但它遵循服务器-客户端备份模型;为了简化讨论,我们将更多地关注备份服务器备份客户端,而不是单个 Bacula 组件。尽管如此,对各种 Bacula 组件有一定的了解仍然很重要,因此我们现在将对它们进行介绍。

Bacula 服务器,我们也将其称为“备份服务器”,具有以下组件:

  • Bacula Director (DIR): 控制由文件和存储守护程序执行的备份和恢复操作的软件
  • 存储守护程序 (SD): 用于备份的存储设备上执行读取和写入操作的软件
  • 目录: 维护备份文件的数据库服务。数据库存储在诸如 MySQL 或 PostgreSQL 之类的 SQL 数据库中
  • Bacula 控制台: 允许备份管理员与 Bacula Director 进行交互和控制的命令行界面
注意:Bacula 服务器组件不需要在同一台服务器上运行,但它们共同工作以提供备份服务器功能。

Bacula 客户端,即将被备份的服务器,运行文件守护程序 (FD) 组件。文件守护程序是提供 Bacula 服务器(特别是 Director)访问将被备份的数据的软件。我们还将这些服务器称为“备份客户端”或“客户端”。

正如我们在简介中提到的,我们将配置备份服务器创建其自身文件系统的备份。这意味着备份服务器也将是备份客户端,并将运行文件守护程序组件。

让我们开始安装。

安装 MySQL

Bacula 使用 SQL 数据库(如 MySQL 或 PostreSQL)来管理其备份目录。在本教程中,我们将使用 MySQL。

首先,更新 apt-get:

sudo apt-get update

现在使用 apt-get 安装 MySQL 服务器:

sudo apt-get install mysql-server

您将被提示为 MySQL 数据库管理用户 root 输入密码,然后确认密码。

请记住此密码,因为它将在 Bacula 安装过程中使用。

安装 Bacula

使用 apt-get 安装 Bacula 服务器和客户端组件:

sudo apt-get install bacula-server bacula-client

您将被提示输入一些信息,这些信息将用于配置 Bacula 使用的 Postfix:

  • 邮件配置的一般类型: 选择“Internet Site”
  • 系统邮件名称: 输入您服务器的 FQDN 或主机名

接下来,您将被提示输入用于设置 Bacula 数据库的信息:

  • 使用 dbconfig-common 为 bacula-director-mysql 配置数据库?: 选择“是”
  • 数据库的管理用户密码: 输入您的 MySQL root 密码(在安装 MySQL 时设置)
  • bacula-director-mysql 的 MySQL 应用程序密码: 输入新密码并确认,或者留空以生成随机密码

安装的最后一步是更新 Bacula 在其目录备份作业期间使用的脚本的权限:

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

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

配置本地作业

Bacula 作业用于执行备份和恢复操作。作业资源定义了特定作业将执行的详细信息,包括客户端的名称、要备份或恢复的文件集等。

在 Director 配置中,找到名称为 “BackupClient1” 的Job资源(搜索 “BackupClient1”)。将 Name 的值更改为 “BackupLocalFiles”,使其如下所示:

Job {
  Name = "BackupLocalFiles"
  JobDefs = "DefaultJob"
}

接下来,找到名称为 “RestoreFiles” 的Job资源(搜索 “RestoreFiles”)。在此作业中,您需要更改两个内容:将 Name 的值更新为 “RestoreLocalFiles”,将 Where 的值更新为 “/bacula/restore”。它应该如下所示:

Job {
  Name = "RestoreLocalFiles"
  Type = Restore
  Client=BackupServer-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

这将配置 RestoreLocalFiles 作业将文件恢复到我们之前创建的 /bacula/restore 目录。

配置文件集

Bacula 文件集定义了要从备份选择中包括排除的文件或目录集,并由作业使用。

找到名称为 “Full Set” 的FileSet资源(在一个注释下,注释说 “# 要备份的文件列表”)。在这里,我们将进行三个更改:(1)添加选项以使用 gzip 压缩我们的备份,(2)将包含文件从 /usr/sbin 更改为 /,(3)将第二个排除文件更改为 /bacula。去除注释后,它应该如下所示:

FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }    
File = /
}
  Exclude {
    File = /var/lib/bacula
    File = /bacula
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

让我们来看看我们对 “Full Set” 文件集所做的更改。首先,在创建备份归档时启用了 gzip 压缩。其次,我们包括了 /,即根分区,以进行备份。第三,我们排除了 /bacula,因为我们不希望冗余地备份我们的 Bacula 备份和恢复的文件。

注意:如果您的分区挂载在 / 中,并且您希望将它们包含在文件集中,您将需要为每个分区包含额外的 File 记录。

请记住,如果您在备份作业中始终使用像 “Full Set” 这样的广泛文件集,您的备份将需要比如果您的备份选择更为具体时更多的磁盘空间。例如,仅包括您定制的配置文件和数据库的文件集可能已经足够满足您的需求,如果您有一个清晰的恢复计划,详细说明了安装所需的软件包并将恢复的文件放置在正确的位置,同时只使用备份归档的一小部分磁盘空间。

配置存储守护程序连接

在 Bacula Director 配置文件中,Storage 资源定义了 Director 应连接到的存储守护程序。我们将很快配置实际的存储守护程序。

找到 Storage 资源,并将 Address 的值 localhost 替换为您的备份服务器的私有 FQDN(或私有 IP 地址)。它应该如下所示(替换高亮词):

Storage {
  Name = File
  Address = your_private_FQDN
  SDPort = 9103
  Password = "your_password"
  Device = FileStorage
  Media Type = File
}
# 不要在这里使用 "localhost"
  Address = backup_server_private_FQDN                # 注意:在这里使用完全合格的名称
  SDPort = 9103
  Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
  Device = FileStorage
  Media Type = File
}
这是必要的,因为我们将配置存储守护程序以侦听私有网络接口,以便远程客户端可以连接到它。
### 配置池
池资源定义了 Bacula 用于编写备份的存储集。我们将使用文件作为我们的存储卷,并简单地更新标签,以便我们的本地备份可以正确地标记。
找到名为 "File" 的池资源(它在一个注释下,注释说 "# File Pool definition"),并添加一行指定标签格式。完成后,它应该如下所示:

File Pool definition

Pool {

Name = File

Pool Type = Backup

Label Format = Local-

Recycle = yes # Bacula 可以自动回收卷

AutoPrune = yes # 剪除过期卷

Volume Retention = 365 days # 一年

Maximum Volume Bytes = 50G # 将卷大小限制为合理值

Maximum Volumes = 100 # 限制池中卷的数量

}

保存并退出。您终于完成了 Bacula Director 的配置。
### 检查 Director 配置:
让我们验证您的 Director 配置文件中是否没有语法错误:
```command
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 {                             # 定义自己
  Name = BackupServer-sd
  SDPort = 9103                  # Director 的端口
  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;                   # 让 Bacula 标记未标记的媒体
  Random Access = Yes;
  AutomaticMount = yes;               # 打开设备时,读取它
  RemovableMedia = no;
  AlwaysOpen = no;
}

保存并退出。

验证存储守护程序配置

让我们验证您的存储守护程序配置文件中是否没有语法错误:

sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

如果没有错误消息,则您的 bacula-sd.conf 文件没有语法错误。

我们已完成 Bacula 配置。我们准备重新启动 Bacula 服务器组件。

重新启动 Bacula Director 和存储守护程序

为了使您所做的配置更改生效,请使用以下命令重新启动 Bacula Director 和存储守护程序:

sudo service bacula-director restart
sudo service bacula-sd restart

现在两个服务都已重新启动,让我们通过运行备份作业来测试它是否正常工作。

测试备份作业

我们将使用 Bacula 控制台来运行我们的第一个备份作业。如果它能够正常运行,我们将知道 Bacula 配置正确。

现在使用以下命令进入控制台:

sudo bconsole

这将带您进入 Bacula 控制台提示符,以 * 提示符表示。

创建标签

首先发出一个 label 命令:

label

然后,您将被提示输入卷名称。输入任何您想要的名称:

[secondary_label 输入新的卷名称:]
MyVolume

然后选择备份应该使用的池。我们将使用我们之前配置的 “File” 池,输入 “2”:

[secondary_label 选择池(1-3):]
2
### 手动运行备份作业
Bacula 现在知道我们要如何写入备份数据了。我们现在可以运行备份来测试它是否能正常工作:
```custom_prefix(*)
run

系统会提示你选择要运行的作业。我们要运行"BackupLocalFiles"作业,所以在提示处输入"1":

[secondary_label 选择要运行的作业资源 (1-3):]
1

在"运行备份作业"确认提示处,确认详情,然后输入"yes"来运行作业:

yes

检查消息和状态

运行作业后,Bacula 会告诉你有消息。这些消息是运行作业生成的输出。

通过输入以下命令来检查消息:

messages

消息应该显示"未找到先前的完整备份作业记录",并且备份作业已经开始。如果有任何错误,那么就有问题了,消息应该会提示作业未能运行的原因。

另一种查看作业状态的方法是检查主管的状态。要做到这一点,在 bconsole 提示符下输入以下命令:

status director

如果一切正常,你应该会看到你的作业正在运行。类似于这样的输出:

[secondary_label 输出 — 主管状态 (运行中的作业)]
运行中的作业:
控制台连接时间 09-Apr-15 12:16
 作业 ID   级别   名称                       状态
======================================================================
     3 完整    BackupLocalFiles.2015-04-09_12.31.41_06 正在运行
====

当你的作业完成后,它将移动到状态报告的"已终止作业"部分,如下所示:

[secondary_label 输出 — 主管状态 (已终止作业)]
已终止作业:
 作业 ID  级别    文件数      字节数   状态   完成时间        名称
====================================================================
     3  完整    161,124    877.5 M  OK       09-Apr-15 12:34 BackupLocalFiles

“OK” 状态表示备份作业已经顺利运行。恭喜你!你已经备份了 Bacula 服务器的"完整集"。

下一步是测试还原作业。

测试还原作业

现在备份已经创建,检查它是否可以正确还原是很重要的。restore 命令将允许我们还原备份的文件。

运行还原所有作业

为了演示,我们将还原最近备份的所有文件:

restore all

将会出现一个选择菜单,其中有许多不同的选项,用于确定要从哪个备份集还原。由于我们只有一个备份,让我们选择"选择最近的备份" —— 选择选项 5:

[secondary_label 选择项目 (1-13):]
5

因为只有一个客户端,即 Bacula 服务器,它将自动被选中。

接下来的提示将询问你要使用哪个文件集。选择"完整集",应该是 2:

[secondary_label 选择文件集资源 (1-2):]
2

这将使你进入一个虚拟文件树,其中包含你备份的整个目录结构。这种类似 shell 的界面允许使用简单的命令来标记和取消标记要还原的文件。

因为我们指定了要"还原所有",每个备份的文件已经被标记为要还原。标记的文件以前导的 * 字符表示。

如果你想要微调你的选择,你可以使用 “ls” 和 “cd” 命令导航和列出文件,使用 “mark” 命令标记要还原的文件,使用 “unmark” 命令取消标记文件。输入 “help” 可以获取命令的完整列表。

当你完成还原选择后,输入以下命令继续:

done

确认你要运行还原作业:

[secondary_label 确认运行? (yes/mod/no):]
yes

检查消息和状态

与备份作业一样,运行还原作业后,你应该检查消息和主管状态。

通过输入以下命令来检查消息:

messages

应该会有一条消息显示还原作业已经开始或以"还原 OK"状态终止。如果有任何错误,那么就有问题了,消息应该会提示作业未能运行的原因。

同样,检查主管状态是查看还原作业状态的好方法:

status director

当你完成还原后,输入 exit 退出 Bacula 控制台:

exit

验证恢复

要验证恢复作业是否真正恢复了所选文件,您可以查看 /bacula/restore 目录(在 Director 配置中的 “RestoreLocalFiles” 作业中定义):

sudo ls -la /bacula/restore

您应该会看到在根文件系统中恢复的文件副本,不包括在 “RestoreLocalFiles” 作业的 “Exclude” 部分中列出的文件和目录。如果您正在尝试从数据丢失中恢复,您可以将恢复的文件复制到其适当的位置。

删除恢复的文件

您可能希望删除恢复的文件以释放磁盘空间。要这样做,请使用以下命令:

sudo -u root bash -c "rm -rf /bacula/restore/*"

请注意,您必须以 root 用户身份运行此 rm 命令,因为许多恢复的文件的所有者是 root。

结论

您现在拥有一个可以备份和恢复本地文件系统的基本 Bacula 设置。下一步是将其他服务器添加为备份客户端,以便在数据丢失时可以恢复它们。

下一个教程将向您展示如何将其他远程服务器作为 Bacula 客户端添加:如何使用 Bacula 备份 Ubuntu 14.04 服务器。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
241 79
|
2月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
217 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
88 12
|
2月前
|
监控 Ubuntu 安全
debian或Ubuntu中开启ssh允许root远程ssh登录的方法
在Debian或Ubuntu系统中启用root用户的SSH远程登录需要编辑SSH配置文件、设置root密码并重启SSH服务。虽然这可以在某些情况下提供便利,但必须注意安全性,通过使用强密码、限制IP访问、使用SSH密钥认证等方法来保护服务器的安全。
416 5
|
3月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
348 4
|
3月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
110 4
|
10天前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
26 6
|
2月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
152 13
|
2月前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
2月前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
1055 12