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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 在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
目录
相关文章
|
1月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
16天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
97 25
|
2月前
|
弹性计算 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`查看版本号。
342 79
|
1月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
5天前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
111 4
|
4天前
|
Ubuntu TensorFlow 算法框架/工具
如何在Ubuntu上安装TensorFlow 24.04
如何在Ubuntu上安装TensorFlow 24.04
26 1
|
8天前
|
SQL 分布式计算 关系型数据库
基于云服务器的数仓搭建-hive/spark安装
本文介绍了在本地安装和配置MySQL、Hive及Spark的过程。主要内容包括: - **MySQL本地安装**:详细描述了内存占用情况及安装步骤,涉及安装脚本的编写与执行,以及连接MySQL的方法。 - **Hive安装**:涵盖了从上传压缩包到配置环境变量的全过程,并解释了如何将Hive元数据存储配置到MySQL中。 - **Hive与Spark集成**:说明了如何安装Spark并将其与Hive集成,确保Hive任务由Spark执行,同时解决了依赖冲突问题。 - **常见问题及解决方法**:列举了安装过程中可能遇到的问题及其解决方案,如内存配置不足、节点间通信问题等。
122 0
基于云服务器的数仓搭建-hive/spark安装
|
9天前
|
消息中间件 分布式计算 资源调度
基于云服务器的数仓搭建-集群安装
本文介绍了大数据集群的安装与配置,涵盖Hadoop、Zookeeper、Kafka和Flume等组件。主要内容包括: 1. **数据模拟** 2. **Hadoop安装部署**:详细描述了HDFS和YARN的配置,包括NameNode、ResourceManager的内存分配及集群启动脚本。 3. **Zookeeper安装**:解压、配置`zoo.cfg`文件,并创建myid文件 4. **Kafka安装**:设置Kafka环境变量、配置`server.properties` 5. **Flume安装**:配置Flume采集日志到Kafka,编写启动脚本进行测试。
77 1
|
11天前
|
安全 数据建模 应用服务中间件
SSL证书怎么获得?获得后如何安装到服务器?
在当今互联网时代,SSL证书是保障网站安全的重要工具,实现HTTPS加密和身份认证,防止数据劫持或篡改,提升SEO效果。获取SSL证书需选择可信的CA机构、选择证书类型、生成CSR、验证域名及企业信息并获取证书。安装SSL证书到服务器(如Nginx)涉及上传证书文件、配置Nginx并重启服务。具体步骤可参考详细教程。 简介:SSL证书对网站安全至关重要,涵盖获取与安装流程,包括选择CA、生成CSR、验证信息、配置服务器等关键步骤。
|
26天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
328 15