专栏首页云计算教程系列如何使用Bacula备份Ubuntu 14.04服务器
原创

如何使用Bacula备份Ubuntu 14.04服务器

介绍

本教程将向您展示如何通过网络连接设置Bacula来创建远程Ubuntu 14.04主机的备份。这涉及在远程主机上安装和配置Bacula Client软件,并对现有Bacula Server的配置进行一些补充(包含在先决条件中)。

要完成本教程,您需要具备一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

先决条件

本教程假设您有一台运行Bacula Server组件的服务器。

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

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

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

组织Bacula Director配置(服务器)

Bacula Server上,执行此部分一次。

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

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

sudo mkdir /etc/bacula/conf.d

然后打开Bacula Director配置文件:

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

在文件末尾添加,这一行:

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

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

添加RemoteFile池

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

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

sudo vi /etc/bacula/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 Client设置了。

安装和配置Bacula客户端

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

首先,更新apt-get:

sudo apt-get update

然后安装bacula-client包:

sudo apt-get install bacula-client

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

配置客户端

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

  • 客户端主机名:我们的示例将使用“ClientHost”
  • 客户端专用FQDN:我们将其称为“client_private_FQDN”,它可能类似clienthost.private.example.com这样
  • Bacula Server主机名:我们的示例将使用“BackupServer”

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

打开文件守护程序配置:

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

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

首先找到以客户端主机名命名的Director资源(例如“ClientHost-dir”)。由于我们要控制此客户端的Bacula Director位于Bacula Server上,请将“Name”参数更改为备份服务器的主机名,后跟“-dir”。按照我们的示例,使用“BackupServer”作为Bacula Server的主机名,更新后应该看起来像这样:

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

您还需要复制Password,这是用于连接到文件守护程序的自动生成的密码,并保存以供将来参考。这将在备份服务器的Director配置中使用,我们将在即将到来的步骤中设置该配置,以连接到客户端的文件守护程序。

接下来,我们需要调整FileDaemon资源中的一个参数。我们将更改FDAddress参数以匹配客户端计算机的专用FQDN。应该已使用客户端文件守护程序名称正确填充Name参数。资源应该看起来像这样(替换实际的FQDN或IP地址):

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

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

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

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

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

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

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

sudo service bacula-fd restart

让我们设置一个Bacula Server可以将文件恢复到的目录。使用以下命令创建文件结构并锁定安全性的权限和所有权:

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

现在正确配置了客户端计算机。接下来,我们将配置Backup Server以便能够连接到Bacula Client。

添加文件集(服务器)

Bacula FileSet定义了一组文件或目录,用于包含或排除备份选择中的文件,并由Bacula Server上的备份作业使用。

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

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

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

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

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

为要在备份作业中使用的每个特定文件集创建FileSet资源。在这个例子中,我们将创建一个仅包含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。完成后保存并退出。

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

将客户端和备份作业添加到Bacula Server

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

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

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

添加客户端资源

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

将此客户端资源定义粘贴到文件中。请务必在客户端主机名,私人FQDN和密码(来自客户端bacula-fd.conf)中替换:

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

您只需为每个客户端执行一次此操作。

创建备份作业:

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

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

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

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

完成后保存并退出。

验证Director配置

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

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

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

重启Bacula Director

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

sudo service bacula-director restart

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

测试客户端连接

我们应该验证Bacula Director可以连接到Bacula Client。

在Bacula Server上,进入Bacula控制台:

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

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

测试备份作业

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

Bacula Server上,仍然在控制台中,使用此命令:

run

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

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

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

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

检查消息和状态

在完成一份工作后,Bacula会告诉你,你有消息。消息是通过运行作业生成的输出。

键入以下内容检查邮件:

messages

消息应显示“找不到先前的完整备份作业记录”,并且备份作业已启动。如果有任何错误,那就是错误的,他们应该给你一个关于工作没有运行的提示。

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

status director

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

执行还原

第一次设置新的Bacula Client时,应该测试还原是否正常。

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

restore all

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

Select item (1-13):
5

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

Select the Client: ClientHost-fd
Defined 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 Server正在从远程Bacula客户端备份文件。请务必查看并修改您的配置,直到您确定要按照满足您需求的计划备份正确的FileSet。

接下来您应该重复本教程的相关部分,以了解您要备份的任何其他Ubuntu 14.04服务器。

想要了解更多关于备份服务器的相关教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Back Up an Ubuntu 14.04 Server with Bacula》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在CentOS 7上安装Bacula Server

    Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

    姚啊姚
  • 如何使用Winston记录Node.js应用程序

    在本指南中,我们将重点介绍Winston的日志包,这是一个极其通用的日志库,是基于NPM下载统计信息,可用于Node.js应用程序的日志记录解决方案。Winst...

    姚啊姚
  • 如何减轻memcached的放大攻击

    在2018年2月27日,Cloudflare 和 Arbor Networks 公司于周二发出警告称,恶意攻击者正在滥用 Memcached 协议发起分布式拒绝...

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

    本教程将向您展示如何通过网络连接设置Bacula来创建远程CentOS 7主机的备份。这涉及在远程主机上安装和配置Bacula Client软件,并对现有Bac...

    一步
  • java socket

    #java socket中进行网络通信的具体步骤。 1.根据指定地址和端口创建于一个Socket对象。 2.调用getInputStream()方法或get...

    德勒
  • Lancet Neurology:长期意识障碍的干预治疗

    严重脑损伤和长期意识障碍患者的治疗存在重要问题,特别是在他们的治疗选择方面。临床和神经影像学数据表明,即使是在受伤数年后,一些长期意识障碍患者仍可能从治疗干预中...

    用户1279583
  • Python selenium文件上传下载功能代码实例

    砸漏
  • 情人节特献:有心之函数必然就有分手函数

    首先,祝大家情人节快乐。不过,对于单身程序猿来说,情人节或许并不快乐。情人节可以说是程序猿们永久的伤痛了。即使是热爱数学的你,或许看到已经被转发到烂的“心之函数...

    Java帮帮
  • Python Web学习笔记之WebSocket 通信过程与实现

    Jetpropelledsnake21
  • Spring 的 WebSecurityConfigurerAdapter 过滤器

    你需要一个 WebSecurityConfigurerAdapter 来对用户提供安全的校验,确保用户能够访问必要的资源。

    HoneyMoose

扫码关注云+社区

领取腾讯云代金券