如何在Ubuntu 12.04 VPS中使用Bacula配置远程备份

什么是红色表示

用户需要输入或定制的生产线将在红色在本教程! 其余的应该主要是复制和粘贴。

介绍

Bacula是一个复杂的备份解决方案,可以通过利用客户端 - 服务器模型来处理本地和远程备份。 它具有非常灵活的配置选项,可以完全控制备份环境。

在本指南中,我们将设置远程备份,涉及备份云服务器和将完全备份的客户端计算机。

您将需要两个单独的服务器实例。 第一个服务器必须根据在列出的配置设置安装和配置的Bacula的Ubuntu 12.04 VPS指南。 第二个服务器将是另一个Ubuntu 12.04机器。

对于本指南的目的,备份VPS有BackupServer的的主机名和客户机的主机名是ClientMachine。 更改这些值以反映正在使用的计算机的服务器名称。

目录

  1. 客户端安装
  2. 客户机配置
  3. 备份服务器配置
  4. 检查配置和重新启动服务
  5. 测试远程备份
  6. 测试远程还原
  7. 检查文件系统

客户端安装

没有本地备份将存储在远程客户端计算机上,因此不需要安装所有bacula组件。

使用bacula-client metapackage在apt-get上安装bacula-fd(文件守护程序)和bconsole(bacula控制台)

sudo apt-get update
sudo apt-get install bacula-client

现在已安装必要的组件,并且可以进行配置。

客户机配置

客户端环境的配置相对简单。 我们将只编辑bacula文件守护程序配置文件。 使用以下命令以root权限打开文件:

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

我们需要更改几个项目,并保存一些我们的服务器配置所需的信息。 通过查找主任段开始。

bacula导向器位于备份VPS上。 将“名称”参数更改为备份服务器的主机名,后跟“-dir”。

您还需要将您的客户端文件守护程序生成的密码复制到在配置备份服务器设置时可用的某个位置:

Director {
  Name = BackupServer-dir
  Password = "u2LK-yBrQzfiEsc6NWftHEhymmdPWsklN"  # Copy this password for later reference!
}

接下来,我们需要在FileDaemon部来调整一个参数。 我们将更改“FDAddress”参数以匹配我们的客户端计算机的IP地址或域名。 “名称”参数应已正确填充客户端文件守护程序名称:

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

我们还需要配置此守护程序将其日志消息传递到备份云服务器。 查找信息部分,将“导演”参数来匹配您的备份云服务器的名称。

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

保存文件并退出。

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

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

如果命令不返回任何输出,则配置文件具有有效的语法。 重新启动文件后台驻留程序以使用新设置:

sudo service bacula-fd restart

客户端计算机现在已正确配置。

在这个例子中,我们想恢复到同一台机器上的一个文件夹。 使用以下命令创建文件结构并锁定安全性的权限和所有权:

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

客户端计算机现在已正确配置。 接下来,我们将配置备份云服务器从客户端拉取文件数据。

备份服务器配置

登录备份云服务器以完成此阶段的配置。

大部分配置实际上是在备份服务器上完成的。 这是因为bacula“director”管理所有其他bacula进程,必须能够与许多不同的组件正确通信。

要开始,请使用管理员权限打开“bacula-dir.conf”文件:

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

作业配置

通过查找工作组开始。 当前配置名为“BackupClient1”,用于备份服务器的本地备份。 我们需要更改名称以反映这一点:

Job {
  Name = "LocalBackup"
  JobDefs = "DefaultJob"
}

现在我们已经确定第一个作业在本地机器上备份,我们希望创建一个类似的作业来备份我们的远程客户端。 为此,请将作业定义复制并粘贴到刚修改的作业下面。

更改名称以反映这是远程备份方案。 “Client”参数将我们的远程客户端文件守护程序标识为我们备份的目标。 Pool参数允许bacula将其远程备份与本地备份分开存储。 我们将在文件中定义稍后引用的池:

Job {
  Name = "RemoteBackup"
  JobDefs = "DefaultJob"
  Client = ClientMachine-fd
  Pool = RemoteFile
}

接下来,定义要还原的远程备份的位置。 我们将使用我们在客户端计算机上创建的目录来恢复远程备份。

查找“RestoreFiles”作业定义。 复制当前条目并将其粘贴到下面。 然后我们将修改一些条目以便准确地标记它并与客户机一起工作:

Job {
  Name = "RestoreRemote"
  Type = Restore
  Client=ClientMachine-fd
  FileSet="Full Set"
  Storage = File     
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

客户端配置

找到客户端定义。 我们将更改“地址”参数以反映我们的实际备份云服务器IP地址,而不是使用localhost。 本地机器的密码应已正确设置。

Client {
  Name = BackupServer-fd
  Address = BackupServer.DomainName.com
  FDPort = 9102
  Catalog = MyCatalog
  Password = "CRQF7PW-mJumFtENX2lqGvJ6gixPTyRQp"          # password for Local FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

下一步是实际定义我们在配置中引用的客户机。 复制我们刚刚修改的客户端进入贴吧目前的定义如下。 这个新定义将用于我们要备份的远程机器。

将名称与客户端计算机的主机名匹配,后跟“-fd”。 “地址”行也需要匹配客户端计算机的IP地址或域名。

最后,在这里输入从远程客户端的文件守护程序配置文件复制的密码。 确保您修改此密码值,否则bacula将无法正常工作。

Client {
  Name = ClientMachine-fd
  Address = ClientMachine.DomainName.com
  FDPort = 9102 
  Catalog = MyCatalog
  Password = "u2LK-yBrQzfiEsc6NWftHEhymmdPWsklN"          # password for Remote FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

存储配置

接下来,更改与备份VPS的IP地址或域名存储部中的“地址”参数。 再次,密码在这里应该是正确的:

Storage {
  Name = File
# Do not use "localhost" here   
  Address = BackupServer.DomainName.com                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "097dnj3jw1Yynpz2AC38luKjy5QTnGoxS"
  Device = FileStorage
  Media Type = File
}

池配置

查找定义部分。 我们将首先向“文件”池定义中添加一个参数。 将“标签格式”参数添加到定义中,并选择一个前缀以命名本地文件备份。 对于本指南,本地备份将以“Local-”作为前缀。

Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  Label Format = Local-
  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
}

接下来,我们需要复制刚刚修改的部分,并将其粘贴到当前条目下面。 将为远程备份存储设置。

更改新池的名称以反映其存储远程备份的作业。 此外,通过将“标签格式”参数调整为“远程”来更改前缀

Pool { 
  Name = RemoteFile
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  Label Format = Remote-
  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
}

保存并关闭文件。

编辑bacula-sd.conf

接下来,使用root权限打开“bacula-sd.conf”文件:

sudo nano /etc/bacula/bacula-sd.conf

更改“SDAddress”参数以反映备份服务器的IP地址或域名:

Storage {                             # definition of myself
  Name = BackupServer-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  SDAddress = BackupServer.DomainName.com
}

保存并关闭文件。

检查配置和重新启动服务

使用以下命令检查配置:

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

如果未返回任何输出,则配置文件具有有效的语法。 如果是这种情况,请重新启动守护程序以使用新设置:

sudo service bacula-director restart
sudo service bacula-sd restart

测试远程备份

登录到bacula控制台以测试备份功能。

sudo bconsole

通过键入以下内容来测试bacula director是否可以连接到远程计算机:

status
Status available for:
     1: Director
     2: Storage
     3: Client
     4: All
Select daemon type for status (1-4): 

选择#3检查客户端连接,然后选择远程计算机:

3: Client
2: ClientMachine-fd

它应该返回包含一些统计信息的摘要,确认我们可以连接到远程文件守护程序。

通过键入以下命令运行远程系统的测试备份:

run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
     1: LocalBackup
     2: RemoteBackup
     3: BackupCatalog
     4: RestoreFiles
     5: RestoreRemote
Select Job resource (1-5): 

选择“RemoteBackup”选项运行远程计算机的备份。 键入“yes”开始备份:

2: RemoteBackup

director将发送备份任务到远程文件守护程序,并将其信息传递给备份服务器的存储守护程序。 您可以使用“status”命令检查作业的状态,如上所述。 您还应该使用“messages”命令检查消息。

messages

如果您继续检查邮件,最终您将收到备份操作的摘要。 它应该包含行“终止:备份确定”,如果一切都按预期。

测试远程还原

现在,测试恢复功能:

restore all

选择“为客户端选择最近的备份”选项。 选择我们刚刚备份的远程客户端:

5: Select the most recent backup for a client
2: ClientMachine-fd

您将被放入一个文件树中,您可以使用“mark”和“unmark”命令选择要恢复的文件。

我们选择恢复一切,所以我们可以输入“完成”继续前进。 选择我们为远程恢复定义的作业,并键入“是”运行恢复:

done
2: RestoreRemote

同样,您可以使用“status”和“messages”命令检查恢复。 您应该最终在包含“终止:恢复确定”行的消息中获取摘要。 这意味着恢复成功。 键入“exit”离开bacula控制台。

exit

检查文件系统

我们可以使用以下命令检查我们的远程备份文件是否具有正确的文件格式:

sudo ls /bacula/backup
LocalBackup   Remote-0002

如您所见,远程系统的备份文件已经适应了我们提供的命名约定。 本地备份没有根据我们的约定命名,因为它是从我们的更改之前。

如果我们登录到我们的远程客户端机器,我们可以使用以下行检查我们的恢复:

sudo ls /bacula/restore
bin   dev  home        lib	   media  opt	run   selinux  sys  var
boot  etc  initrd.img  lost+found  mnt	  root	sbin  srv      usr  vmlinuz

如您所见,我们已将文件系统正确还原到此文件夹。

作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏