如何使用 Bacula 备份 CentOS 7 服务器

介绍

本教程将向您展示如何设置 Bacula 来创建远程 CentOS 7 主机的备份,通过网络连接. 这涉及在远程主机上安装和配置 Bacula Client 软件,并对现有 Bacula Server 的配置做一些补充(包括前提条件)。

如果您正在尝试创建 Ubuntu 14.04 主机的备份,请使用以下链接: 如何使用 Bacula 备份 Ubuntu 14.04 服务器

前提条件

本教程假定您有一个运行 Bacula Server 组件的服务器,如下链接所述: 如何在 CentOS 7 上安装 Bacula Server

我们还假定您正在使用私有网络接口来备份服务器-客户端通信,我们将参考服务器的私有 FQDN(指向私有 IP 地址的 FQDN)。

对于本教程的剩余部分,我们将把 Bacula Server 称为BaculaServer,Bacula ServerBackup Server。我们将把远程主机称为ClientHost,Client HostClient

让我们从对 Bacula Server 配置进行一些快速更改开始。

组织 Bacula 管理器配置(服务器)

在您的 Bacula 服务器 上,执行此部分一次。

在设置您的 Bacula 服务器时,您可能会注意到配置文件过长,我们会尝试和组织 Bacula 管理器配置一点,所以它使用单独的文件添加新的配置,如工作,文件集和池。

让我们创建一个目录来帮助组织 Bacula 配置文件:

1sudo mkdir /etc/bacula/conf.d

然后打开 Bacula Director 配置文件:

1sudo vi /etc/bacula/bacula-dir.conf

在文件的末尾添加,这个行:

1[label bacula-dir.conf — Add to end of file]
2@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"

保存和退出. 此行使管理员在 /etc/bacula/conf.d 目录中查看附加的其他配置文件. 也就是说,任何在其中添加的 .conf 文件将作为配置的一部分加载。

添加远程文件池

我们希望在我们的 Bacula Director 配置中添加一个额外的 Pool,我们将使用它来配置我们的远程备份任务。

打开conf.d/pools.conf文件:

1sudo vi /etc/bacula/conf.d/pools.conf

添加以下 Pool 资源:

 1[label conf.d/pools.conf — Add Pool resource]
 2Pool {
 3  Name = RemoteFile
 4  Pool Type = Backup
 5  Label Format = Remote-
 6  Recycle = yes                       # Bacula can automatically recycle Volumes
 7  AutoPrune = yes                     # Prune expired volumes
 8  Volume Retention = 365 days         # one year
 9    Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
10  Maximum Volumes = 100               # Limit number of Volumes in Pool
11}

这定义了一个RemoteFile池,我们将使用后面我们创建的备份工作。

我们还不需要重新启动 Bacula Director,但让我们检查它的配置没有任何错误:

1sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

如果没有错误,你已经准备好继续到Bacula客户端的设置。

安装和配置 Bacula 客户端

在您正在添加到 Bacula 设置的任何客户端主机上执行此部分。

然后安装bacula-client包:

1sudo yum install bacula-client

这将安装Bacula File Daemon(FD),通常被称为Bacula客户端

配置客户端

在配置客户端 File Daemon 之前,您将需要查找以下信息,这些信息将在本教程的剩余时间内使用:

客户端主机名称: :我们的示例将使用ClientHost* 客户端私人FQDN:* 我们将将此称为client_private_FQDN,这可能看起来像clienthost.private.example.com** Bacula服务器主机名称:* 我们的示例将使用BackupServer

您的实际设置将不同于示例,因此请确保在适当的情况下进行更换。

我们将需要设置一个密码,这将允许Bacula Director连接,在File Daemon配置. 让我们现在生成一个随机密码(或者你可以跳过这个步骤并创建自己的密码):

1date +%s | sha256sum | base64 | head -c 33 ; echo

您将想要复制输出,因为您将在下一步使用它。

打开 File Daemon 配置:

1sudo vi /etc/bacula/bacula-fd.conf

我们需要改变一些项目,并保存一些我们将需要的服务器配置的信息。

首先要找到名为ClientHost-dir的管理器资源,因为我们想要控制这个客户端的Bacula Director位于Bacula Server上,然后将Name参数更改为您的备份服务器的主机名称,然后是-dir

1[label bacula-fd.conf — Update Director Name and Password]
2Director {
3  Name = BackupServer-dir
4  Password = "Y2Q5ODUyMWM0YTFhYjA3NTcwYmU5OTA4Y"
5}

请确保密码保持方便,它将用于备份服务器的管理器配置,我们将在接下来的步骤中设置,以连接到您的客户端的文件戴蒙。

接下来,我们需要在FileDaemon资源中调整一个参数。我们将更改):

1[label bacula-fd.conf  Update Name and Add FDAddress]
2FileDaemon {                          # this is me
3  Name = ClientHost-fd
4  FDAddress = client_private_ip
5  FDport = 9102                  # where we listen for the director
6  WorkingDirectory = /var/spool/bacula
7  Pid Directory = /var/run
8  Maximum Concurrent Jobs = 20
9}

我们还需要配置这个主机以将其日志消息传递到备份服务器中。 查找消息资源并更改管理员参数以匹配您的备份服务器的主机名称与-dir字符串。

1[label bacula-fd.conf — Update director]
2Messages {
3  Name = Standard
4  director =  BackupServer-dir = all, !skipped, !restored
5}

您的 文件 Daemon (Bacula 客户端) 现在已配置为通过私人网络收听连接。

检查您的配置文件是否具有正确的语法,使用以下命令:

1sudo bacula-fd -tc /etc/bacula/bacula-fd.conf

如果命令返回没有输出,则配置文件具有有效的语法。

1sudo systemctl restart bacula-fd

然后运行以下命令来自动启动 Bacula File Daemon:

1sudo systemctl enable bacula-fd

创建文件结构,并用以下命令锁定安全权限和所有权:

1sudo mkdir -p /bacula/restore
2sudo chown -R bacula:bacula /bacula
3sudo chmod -R 700 /bacula

客户端机器现在已正确配置,接下来,我们将配置备份服务器,以便能够连接到 Bacula 客户端。

添加 FileSets (服务器)

Bacula FileSet 定义了一组文件或目录,以包括或排除备份选项中的文件,并用于 Bacula 服务器上的备份任务。

如果您遵循了建立 Bacula Server 组件的前提教程,那么您已经有一个名为完整设置的 FileSet。如果您想要运行包含您的备份客户端几乎每个文件的备份任务,您可以在您的工作中使用该 FileSet。

更有选择性地选择哪个文件包含在一个FileSet中,会减少您的备份服务器所需的磁盘空间和时间,以执行备份任务。

我们将向您展示如何创建新的 FileSet 资源,以便您在备份中更有选择性。

在您的 Bacula Server 上,打开名为 `filesets.conf’的文件,在我们之前创建的 Bacula Director 配置目录中:

1sudo vi /etc/bacula/conf.d/filesets.conf

在此示例中,我们将创建一个FileSet资源,其中只包括主目录和等目录:

 1[label filesets.conf — Add Home and Etc FileSet]
 2FileSet {
 3  Name = "Home and Etc"
 4  Include {
 5    Options {
 6      signature = MD5
 7      compression = GZIP
 8    }
 9    File = /home
10    File = /etc
11  }
12  Exclude {
13    File = /home/bacula/not_important
14  }
15}

在这个文件中发生了很多事情,但这里有一些细节要记住:

  • FileSet 名称必须是唯一的 * 包括您想要备份的任何文件或分区 * 排除您不希望备份的任何文件,但由于在包含文件中存在而被选择

如果你愿意,你可以创建多个 FileSets. 保存和退出,当你完成。

现在我们准备创建备份工作,将使用我们的新FileSet。

添加客户端和备份工作到 Bacula 服务器

现在,我们已经准备好将我们的客户端添加到Bacula服务器中,要做到这一点,我们必须将Bacula Director配置为新的客户端和工作资源。

打开conf.d/clients.conf文件:

1sudo vi /etc/bacula/conf.d/clients.conf

添加客户资源

客户端资源将管理器配置为连接到客户端主机所需的信息,其中包括客户端文件戴蒙的名称、地址和密码。

请确保在您的客户端主机名、私人 FQDN 和密码中代替(从客户端的 bacula-fd.conf),其中突出显示:

 1[label conf.d/clients.conf — Add Client resource]
 2Client {
 3  Name = ClientHost-fd
 4  Address = client_private_FQDN
 5  FDPort = 9102 
 6  Catalog = MyCatalog
 7  Password = "Y2Q5ODUyMWM0YTFhYjA3NTcwYmU5OTA4Y"          # password for Remote FileDaemon
 8  File Retention = 30 days            # 30 days
 9  Job Retention = 6 months            # six months
10  AutoPrune = yes                     # Prune expired Jobs/Files
11}

您只需要为每个客户做一次。

创建备份工作:

备份任务必须具有独特的名称,它定义了哪些客户端的详细信息以及哪些数据应该备份。

接下来,将此备份工作粘贴到文件中,将客户端主机名替换为突出文本:

1[label conf.d/clients.conf — Add Backup job resource]
2Job {
3  Name = "BackupClientHost"
4  JobDefs = "DefaultJob"
5  Client = ClientHost-fd
6  Pool = RemoteFile
7  FileSet="Home and Etc"
8}

这会创建一个名为BackupClientHost的备份工作,该工作将备份客户端主机的首页和其他目录,如Home and Etc FileSet 所定义。它将使用DefaultJob JobDefs 和RemoteFile Pool 资源中规定的设置,这些资源都定义在主 bacula-dir.conf 文件中。默认情况下,指定 JobDefs = DefaultJob` 的工作将每周运行。

保存和退出,当你完成。

检查管理器配置

让我们检查您的 Director 配置文件中没有语法错误:

1sudo bacula-dir /etc/bacula/bacula-dir.conf

如果您返回 shell 提示,则 Bacula Director 配置文件中没有语法错误。

重新启动 Bacula 导演

要实现您所做的配置更改,请重新启动 Bacula Director:

1sudo systemctl restart bacula-dir

现在您的客户端或远程主机已配置为由您的 Bacula Server 备份。

测试客户端连接

我们应该验证Bacula Director可以连接到Bacula客户端。

在您的 Bacula 服务器上,输入 Bacula 控制台:

1sudo bconsole
1status client
1[secondary_label Select Client resource: ClientHost-fd]
2The defined Client resources are:
3     1: BackupServer-fd
4     2: ClientHost-fd
5Select Client (File daemon) resource (1-2): 2

客户端的 File Daemon 状态应立即返回. 如果没有,并且存在连接错误,那么 Bacula Server 或客户端的 File Daemon 配置有问题。

测试备份工作

让我们运行备份工作,以确保它工作。

Bacula Server 上,当您仍在控制台时,请使用以下命令:

1run

您将被提示选择要运行哪个工作,选择我们之前创建的工作,例如4. BackupClientHost:

1[secondary_label Select Job resource: BackupClientHost]
2The defined Job resources are:
3     1: BackupLocalFiles
4     2: BackupCatalog
5     3: RestoreLocalFiles
6     4: BackupClientHost
7Select Job resource (1-4): 4

在确认提示中,输入:

1Confirmation prompt:
2OK to run? (yes/mod/no): yes

查看消息和状态

运行任务后,Bacula会告诉你你有消息,这些消息是通过运行任务生成的输出。

通过键入查看消息:

1messages

消息应该说没有以前的完整备份工作记录被找到,并且备份工作开始了。

查看工作状态的另一种方法是检查主任的状态. 要做到这一点,请在 bconsole 提示处输入以下命令:

1status director

如果一切正常工作,你应该看到你的工作正在运行或以OK状态结束。

执行恢复

第一次设置新的 Bacula 客户端时,您应该测试恢复程序是否正常工作。

如果您想执行恢复,请使用 Bacula Console 中的恢复命令:

1restore all

选择菜单将出现许多不同的选项,用于识别从哪个备份设置恢复. 由于我们只有一个备份,让我们选择最新的备份 - 选择选项 5:

1[secondary_label Select item (1-13):]
25

然后你必须指定哪个客户端要恢复,我们想要恢复我们刚刚设置的远程主机,例如ClientHost-fd:

1[secondary_label Select the Client: ClientHost-fd]
2Defined Clients:
3     1: BackupServer-fd
4     2: ClientHost-fd
5Select the Client (1-2): 2

这会让您陷入一个虚拟的文件树中,其中包含您备份的整个目录结构,这种壳式界面允许简单的命令来标记和解标文件以恢复。

因为我们指定了我们想要恢复所有,每个备份的文件已经被标记为恢复,标记的文件被标记为一个领先的* 字符。

如果你想精心调节你的选择,你可以导航和列出用lscd命令的文件,标记文件以恢复为标记,并卸载文件以无标记

当您完成恢复选择时,继续键入:

1done

确认您想运行恢复任务:

1[secondary_label OK to run? (yes/mod/no):]
2yes

查看消息和状态

与备份工作一样,在运行恢复任务后,您应该检查消息和管理员状态。

通过键入查看消息:

1messages

应该有一个消息,表示恢复工作已经开始或以恢复OK状态结束. 如果有任何错误,有什么不对劲,他们应该给你一个提示,为什么工作没有运行。

再次,检查管理员状态是查看恢复工作状态的好方法:

1status director

当您完成恢复时,键入退出,离开 Bacula Console:

1exit

如果一切正常工作,你的恢复的文件将在您的客户端主机,在/bacula/restore目录. 如果你只是测试恢复过程,你应该删除该目录的内容。

结论

你现在有一个Bacula服务器,它正在备份来自远程Bacula客户端的文件。 请确保审查和修改你的配置,直到你确定你正在备份正确的FileSets,根据符合你的需求的时间表。 如果你正在尝试创建Ubuntu 14.04主机的备份,请遵循这个链接: 如何备份Ubuntu 14.04服务器与Bacula.

您应该做的下一步是重复本教程的相关部分,用于您想要备份的任何额外的 CentOS 7 服务器。

Published At
Categories with 技术
Tagged with
comments powered by Disqus