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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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 服务器。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
57 2
|
10天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
768 3
|
4天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
25 4
Linux系统之Ubuntu安装cockpit管理工具
|
9天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
42 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
9天前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
14 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
5天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
17 1
|
9天前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
16 2
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
6天前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法
|
6天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。