如何使用Bacula备份CentOS7服务器

来自菜鸟教程
跳转至:导航、​搜索

介绍

本教程将向您展示如何设置 Bacula 以通过网络连接创建远程 CentOS 7 主机的备份。 这涉及在远程主机上安装和配置 Bacula 客户端软件,并对现有 Bacula 服务器的配置进行一些添加(在先决条件中介绍)。

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

先决条件

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

我们还假设您使用专用网络接口进行备份服务器-客户端通信。 我们将引用服务器的私有 FQDN(指向私有 IP 地址的 FQDN)。 如果您使用 IP 地址,只需在适当的地方替换连接信息。

在本教程的其余部分,我们将 Bacula Server 称为“BaculaServer”、“Bacula Server”或“Backup Server”。 我们将正在备份的远程主机称为“ClientHost”、“Client Host”或“Client”。

让我们开始对 Bacula 服务器配置进行一些快速更改。

组织 Bacula Director 配置(服务器)

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

在设置 Bacula 服务器时,您可能已经注意到配置文件过长。 我们将尝试稍微组织一下 Bacula Director 配置,因此它使用单独的文件来添加新配置,例如作业、文件集和池。

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

sudo mkdir /etc/bacula/conf.d

然后打开 Bacula Director 配置文件:

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

在文件末尾添加这一行:

bacula-dir.conf — 添加到文件末尾

@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"

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

添加远程文件池

我们想在我们的 Bacula Director 配置中添加一个额外的池,我们将使用它来配置我们的远程备份作业。

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

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

添加以下池资源:

conf.d/pools.conf — 添加池资源

Pool {
  Name = RemoteFile
  Pool Type = Backup
  Label Format = Remote-
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
    Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

保存并退出。 这定义了一个“RemoteFile”池,我们将在稍后创建的备份作业中使用它。 随意更改任何参数以满足您自己的需要。

我们现在不需要重新启动 Bacula Director,但让我们验证它的配置没有任何错误:

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

如果没有错误,您就可以继续进行 Bacula 客户端设置。

安装和配置 Bacula 客户端

在您添加到 Bacula 设置的任何 Client Host 上执行此部分。

然后安装bacula-client包:

sudo yum install bacula-client

这将安装 Bacula 文件守护程序 (FD),它通常被称为“Bacula 客户端”。

配置客户端

在配置客户端文件守护程序之前,您需要查找以下信息,这些信息将在本教程的其余部分中使用:

  • 客户端主机名::我们的示例将使用“ClientHost”
  • Client Private FQDN: 我们将其称为“client_private_FQDN”,可能类似于 clienthost.private.example.com
  • Bacula 服务器主机名: 我们的示例将使用“BackupServer”

您的实际设置将与示例不同,因此请务必在适当的地方进行替换。

我们需要在 File Daemon 配置中设置一个密码,这将允许 Bacula Director 连接。 现在让我们生成一个随机密码(或者您可以跳过此步骤并自己编写密码):

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

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

打开文件守护程序配置:

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

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

首先查找名为“ClientHost-dir”的 Director 资源。 由于我们要控制此客户端的 Bacula Director 位于 Bacula 服务器上,因此将“名称”参数更改为备份服务器的主机名,后跟“-dir”。 此外,将现有密码替换为您在上一步中生成的密码。 更新后应该是这样的:

bacula-fd.conf — 更新导演名称和密码

Director {
  Name = BackupServer-dir
  Password = "Y2Q5ODUyMWM0YTFhYjA3NTcwYmU5OTA4Y"
}

请务必将密码放在手边。 它将用于备份服务器的 Director 配置(我们将在接下来的步骤中设置)以连接到客户端的文件守护程序。

接下来,我们需要调整 FileDaemon 资源中的一个参数。 我们将更改 FDAddress 参数以匹配我们客户端计算机的私有 FQDN。 Name 参数应该已经正确填充了客户端文件守护进程名称。 资源应如下所示(替换实际的 FQDN 或 IP 地址):

bacula-fd.conf — 更新名称并添加 FDAAddress

FileDaemon {                          # this is me
  Name = ClientHost-fd
  FDAddress = client_private_ip
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

我们还需要配置此守护程序以将其日志消息传递给备份服务器。 找到 Messages 资源并更改 director 参数以匹配带有“-dir”后缀的备份服务器的主机名。 它应该看起来像这样:

bacula-fd.conf — 更新主管

Messages {
  Name = Standard
  director =  BackupServer-dir = all, !skipped, !restored
}

保存文件并退出。 您的文件守护程序(Bacula 客户端)现在已配置为侦听专用网络上的连接。

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

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

如果命令没有返回输出,则配置文件具有有效的语法。 重新启动文件守护程序以使用新设置:

sudo systemctl restart bacula-fd

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

sudo systemctl enable bacula-fd

让我们设置一个 Bacula 服务器可以将文件还原到的目录。 使用以下命令创建文件结构并锁定权限和所有权以确保安全:

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

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

添加文件集(服务器)

Bacula FileSet 定义一组文件或目录,以在备份选择中包含或排除文件,并由 Bacula 服务器上的备份作业使用。

如果您遵循了设置 Bacula Server 组件的先决条件教程,那么您已经有了一个名为“Full Set”的文件集。 如果要运行几乎包含备份客户端上每个文件的备份作业,可以在作业中使用该 FileSet。 但是,您可能会发现,您通常不希望或不需要对服务器上的所有内容进行备份,而数据子集就足够了。

更有选择性地将哪些文件包含在文件集中将减少备份服务器运行备份作业所需的磁盘空间和时间。 它还可以使恢复更简单,因为您不需要筛选“完整集”来查找要恢复的文件。

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

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

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

为要在备份作业中使用的每个特定文件集创建一个 FileSet 资源。 在此示例中,我们将创建一个仅包含 home 和 etc 目录的 FileSet:

filesets.conf — 添加 Home 和 Etc FileSet

FileSet {
  Name = "Home and Etc"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = /home
    File = /etc
  }
  Exclude {
    File = /home/bacula/not_important
  }
}

此文件中发生了很多事情,但这里有一些细节需要牢记:

  • 文件集名称必须是唯一的
  • 包括您想要备份的任何文件或分区
  • 排除您不想备份但因存在于包含的文件中而被选中的任何文件

如果您愿意,可以创建多个 FileSet。 完成后保存并退出。

现在我们准备好创建将使用我们的新文件集的备份作业。

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

现在我们准备好将我们的客户端添加到 Bacula 服务器。 为此,我们必须为 Bacula Director 配置新的客户端和作业资源。

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

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

添加客户端资源

客户端资源为 Director 配置连接到客户端主机所需的信息。 这包括客户端文件守护程序的名称、地址和密码。

将此客户端资源定义粘贴到文件中。 请务必替换您的客户端主机名、私有 FQDN 和密码(来自客户端的 bacula-fd.conf),其中突出显示:

conf.d/clients.conf — 添加客户端资源

Client {
  Name = ClientHost-fd
  Address = client_private_FQDN
  FDPort = 9102 
  Catalog = MyCatalog
  Password = "Y2Q5ODUyMWM0YTFhYjA3NTcwYmU5OTA4Y"          # password for Remote FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

您只需为每个客户执行一次。

创建备份作业:

必须具有唯一名称的备份作业定义了应备份哪个客户端和哪些数据的详细信息。

接下来,将此备份作业粘贴到文件中,用客户端主机名替换突出显示的文本:

conf.d/clients.conf — 添加备份作业资源

Job {
  Name = "BackupClientHost"
  JobDefs = "DefaultJob"
  Client = ClientHost-fd
  Pool = RemoteFile
  FileSet="Home and Etc"
}

这将创建一个名为“BackupClientHost”的备份作业,它将备份客户端主机的主目录和其他目录,如“Home and Etc”文件集中定义的那样。 它将使用“DefaultJob”JobDefs 和“RemoteFile”池资源中指定的设置,这两个资源都在主 bacula-dir.conf 文件中定义。 默认情况下,指定 JobDefs = "DefaultJob" 的作业将每周运行。

完成后保存并退出。

验证控制器配置

让我们验证一下您的 Director 配置文件中没有语法错误:

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

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

重启 Bacula Director

要使您所做的配置更改生效,请重新启动 Bacula Director:

sudo systemctl restart bacula-dir

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

测试客户端连接

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

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

sudo bconsole
status client
Select Client resource: ClientHost-fdThe defined Client resources are:
     1: BackupServer-fd
     2: ClientHost-fd
Select Client (File daemon) resource (1-2): 2

客户端的文件守护程序状态应立即返回。 如果没有,并且出现连接错误,则 Bacula 服务器或客户端文件守护程序的配置有问题。

测试备份作业

让我们运行备份作业以确保它正常工作。

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

run

系统将提示您选择要运行的作业。 选择我们之前创建的那个,例如 “4。 备份客户端主机”:

Select Job resource: BackupClientHostThe defined Job resources are:
     1: BackupLocalFiles
     2: BackupCatalog
     3: RestoreLocalFiles
     4: BackupClientHost
Select Job resource (1-4): 4

在确认提示下,输入“yes”:

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

检查消息和状态

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

通过键入以下内容检查消息:

messages

消息应显示“未找到先前的完整备份作业记录”,并且备份作业已开始。 如果有任何错误,则说明有问题,它们应该会提示您作业未运行的原因。

查看作业状态的另一种方法是检查 Director 的状态。 为此,请在 bconsole 提示符下输入以下命令:

status director

如果一切正常,您应该看到您的工作正在运行或以“OK”状态终止。

执行还原

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

如果要执行还原,请在 Bacula 控制台上使用 restore 命令:

restore all

将出现一个选择菜单,其中包含许多不同的选项,用于确定要从哪个备份集进行恢复。 由于我们只有一个备份,让我们“选择最近的备份”——选择选项 5:

Select item (1-13):5

然后您必须指定要恢复的客户端。 我们要恢复我们刚刚设置的远程主机,例如 “ClientHost-fd”:

Select the Client: ClientHost-fdDefined Clients:
     1: BackupServer-fd
     2: ClientHost-fd
Select the Client (1-2): 2

这会将您放入具有您备份的整个目录结构的虚拟文件树中。 这个类似于 shell 的界面允许使用简单的命令来标记和取消标记要恢复的文件。

因为我们指定要“全部恢复”,所以每个备份的文件都已标记为要恢复。 标记的文件由前导 * 字符表示。

如果您想微调您的选择,您可以使用“ls”和“cd”命令导航和列出文件,使用“mark”标记要恢复的文件,使用“unmark”取消标记文件。 通过在控制台中输入“help”可以获得完整的命令列表。

完成还原选择后,继续键入:

done

确认您要运行还原作业:

OK to run? (yes/mod/no):yes

检查消息和状态

与备份作业一样,您应该在运行还原作业后检查消息和 Director 状态。

通过键入以下内容检查消息:

messages

应该有一条消息表明恢复作业已开始或以“恢复正常”状态终止。 如果有任何错误,则说明有问题,它们应该会提示您作业未运行的原因。

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

status director

完成还原后,键入 exit 以离开 Bacula 控制台:

exit

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

结论

您现在拥有一个 Bacula 服务器,它正在从远程 Bacula 客户端备份文件。 请务必查看和修改您的配置,直到您确定您正在按照满足您需要的时间表备份正确的文件集。 如果您尝试创建 Ubuntu 14.04 主机的备份,请点击以下链接:如何使用 Bacula 备份 Ubuntu 14.04 服务器。

您应该做的下一件事是对您要备份的任何其他 CentOS 7 服务器重复本教程的相关部分。