如何备份一个CentOS 7服务器与Bacula的

本教程将告诉你如何设置Bacula的创建一个远程的CentOS 7主机备份,通过网络连接。这涉及到安装和远程主机上配置Bacula的客户端软件,并做一些补充到现有的Bacula的配置...

介绍

本教程将向您介绍如何设置Bacula通过网络连接创建远程CentOS 7主机的备份。 这包括在远程主机上安装和配置Bacula Client软件,并对现有Bacula服务器的配置进行一些添加(在前提条件中包括)。

如果您正在尝试创建的Ubuntu 14.04主机的备份,请点击此链接来代替: 如何备份一个Ubuntu 14.04服务器与Bacula的

先决条件

本教程假定你有一台服务器运行Bacula的服务器组件,在这个环节中描述: 如何在CentOS 7安装Bacula的服务器

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

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

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

组织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 @{} \;"

保存并退出。 此行让主任看在/etc/bacula/conf.d额外的配置文件来添加目录。 也就是说,任何.conf在那里将被载入作为配置的一部分添加的文件。

添加RemoteFile池

我们要为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的安装任何客户端主机本节。

然后安装bacula-client包:

sudo yum install bacula-client

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

配置客户端

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

  • 客户端主机:我们的例子将使用“CLIENTHOST”
  • 客户专用FQDN:我们称这种现象为“client_private_FQDN”,这可能看起来像clienthost.private.example.com
  • Bacula的服务器主机名:我们的例子将使用“BackupServer的”

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

我们将需要在文件守护程序配置中设置一个允许Bacula Director连接的密码。 让我们现在生成一个随机密码(或者你可以跳过这一步,并自己修改密码):

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

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

打开文件守护程序配置:

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

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

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

bacula-fd.conf - 更新主管名称和密码
Director {
  Name = BackupServer-dir
  Password = "Y2Q5ODUyMWM0YTFhYjA3NTcwYmU5OTA4Y"
}

请务必保留密码。 它将在Ba​​ckup Server的Director配置中使用,我们将在后续步骤中设置它,以连接到您的客户端的文件后台程序。

接下来,我们需要调整FileDaemon资源中的一个参数。 我们将改变FDAddress参数以匹配我们的客户机的私人FQDN。 Name参数应该已经与客户端文件守护程序的名称无误。 资源应该看起来像这样(替换实际的FQDN或IP地址):

bacula-fd.conf - 更新名称和添加FDAddress
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
}

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

bacula-fd.conf - 更新director
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。 但是,您可能会发现,您经常不希望或需要备份服务器上的所有内容,并且数据的一个子集就足够了。

由于FileSet中包含更多选择性的文件,将减少备份服务器运行备份作业所需的磁盘空间和时间。 它也可以使修复更简单,因为你不需要筛选“完整集”找到要恢复的文件。

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

在您的服务器Bacula的 ,打开一个名为filesets.conf ,在我们前面创建的Bacula的Director配置目录:

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名称必须是唯一的
  • 包括要备份的任何文件或分区
  • 排除您不想备份的任何文件,但由于包含文件中存在的文件而被选中

如果需要,您可以创建多个文件集。 保存并退出,完成后。

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

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

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

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

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

添加客户端资源

客户端资源使用连接到客户端主机所需的信息配置控制器。 这包括客户端文件守护程序的名称,地址和密码。

将此客户端资源定义粘贴到文件中。 一定要在你的客户端主机,专用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和etc目录,如“Home and Etc”FileSet中定义。 它将使用在“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
The defined Client resources are:
     1: BackupServer-fd
     2: ClientHost-fd
Select Client (File daemon) resource (1-2): 2

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

测试备份作业

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

Bacula的服务器 ,同时还在控制台,使用此命令:

run

系统将提示您选择要运行的作业。 选择我们之前创建的,例如“4. BackupClientHost”:

The 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客户端时,您应该测试恢复是否正常工作。

如果要执行恢复,使用restore在Bacula的控制台命令:

restore all

将出现一个选择菜单,其中有许多不同的选项,用于标识要还原哪个备份集。 由于我们只有一个备份,让我们选择最近的备份 - 选择选项5:

5

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

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

这将使您进入具有所备份的整个目录结构的虚拟文件树。 这个类shell接口允许简单的命令来标记和取消标记要恢复的文件。

因为我们指定我们想要“还原所有”,每个备份的文件已经标记为还原。 标记的文件是由领先的表示*字符。

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

完成恢复选择后,请键入以下内容继续:

done

确认要运行还原作业:

yes

检查消息和状态

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

键入以下内容检查消息:

messages

应该有一条消息表明还原作业已启动或已通过“恢复确定”状态终止。 如果有任何错误,有什么问题,他们应该给你一个提示,为什么工作没有运行。

同样,检查Director状态是一个很好的方式来查看恢复作业的状态:

status director

当你与恢复完成后,键入exit离开Bacula的控制台:

exit

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

结论

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

接下来,您应该做的是重复本教程的相关章节,以备您想要备份的任何其他CentOS 7服务器。