在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 服务器。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
18天前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
239 8
|
19天前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
85 5
|
15天前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
80 11
|
22天前
|
NoSQL Ubuntu MongoDB
在Ubuntu 22.04上安装MongoDB 6.0的步骤
这些步骤应该可以在Ubuntu 22.04系统上安装MongoDB 6.0。安装过程中,如果遇到任何问题,可以查阅MongoDB的官方文档或者Ubuntu的相关帮助文档,这些资源通常提供了解决特定问题的详细指导。
146 18
|
30天前
|
Shell Linux 网络安全
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
230 3
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
|
2月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
221 18
|
2月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
156 18
|
2月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
166 15
|
18天前
|
弹性计算
阿里云8核16G云服务器收费标准:最新价格及省钱购买方法整理
阿里云8核16G云服务器价格因实例类型而异。计算型c9i约743元/月,一年6450元(7折);通用算力型u1约673元/月,一年仅需4225元(5.1折)。实际价格享时长折扣,详情见ECS官网。
|
22天前
|
域名解析 弹性计算 负载均衡
给阿里云服务器加速的方法有哪些?
本文介绍如何通过阿里云CDN加速、ECS网络优化及SLB负载均衡三种方法提升服务器响应速度。涵盖具体操作步骤,助力用户优化访问性能。

热门文章

最新文章