介绍
本教程将向您展示如何设置Bacula以创建远程Ubuntu 14.04主机的备份,通过网络连接。这涉及在远程主机上安装和配置Bacula Client软件,并对现有Bacula Server的配置做一些补充(包括前提条件)。
如果您正在尝试创建 CentOS 7 主机的备份,请使用以下链接: 如何使用 Bacula 备份 CentOS 7 服务器。
前提条件
本教程假设您有一个运行Bacula Server组件的服务器,如下所述: 如何在Ubuntu 14.04上安装Bacula Server。
我们还假定您正在使用私有网络接口来备份服务器-客户端通信,我们将参考服务器的私有 FQDN(指向私有 IP 地址的 FQDN)。
对于本教程的剩余部分,我们将把 Bacula Server 称为BaculaServer
,Bacula Server
或Backup Server
。我们将把远程主机称为ClientHost
,Client Host
或Client
。
让我们从对 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 设置的任何客户端主机上执行此部分。
首先,更新 apt-get:
1sudo apt-get update
然后安装bacula-client
包:
1sudo apt-get install bacula-client
这将安装Bacula File Daemon(FD),通常被称为Bacula客户端
。
配置客户端
在配置客户端 File Daemon 之前,您将需要查找以下信息,这些信息将在本教程的剩余时间内使用:
客户端主机名称: :我们的示例将使用ClientHost
* 客户端私人FQDN:* 我们将将此称为client_private_FQDN
,这可能看起来像clienthost.private.example.com
** Bacula服务器主机名称:* 我们的示例将使用BackupServer
您的实际设置将不同于示例,因此请确保在适当的情况下进行更换。
打开 File Daemon 配置:
1sudo vi /etc/bacula/bacula-fd.conf
我们需要改变一些项目,并保存一些我们将需要的服务器配置的信息。
首先,要找到您的客户端主机名称(例如)之后命名的管理器资源,因为我们希望控制这个客户端的Bacula Director位于Bacula Server上,因此,在更新后,将Name
参数更改为您的备份服务器的主机名称,然后是-dir
。
1[label bacula-fd.conf — Update Director Name]
2Director {
3 Name = BackupServer-dir
4 Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi"
5}
您还需要复制密码
,这是用于连接到 File Daemon 的自动生成的密码,并将其保存为未来参考。
接下来,我们需要在FileDaemon资源中调整一个参数。我们将更改):
1[label bacula-fd.conf — Update FDAddress]
2FileDaemon { # this is me
3 Name = ClientHost-fd
4 FDport = 9102 # where we listen for the director
5 WorkingDirectory = /var/lib/bacula
6 Pid Directory = /var/run/bacula
7 Maximum Concurrent Jobs = 20
8 FDAddress = client_private_FQDN
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 service bacula-fd restart
创建文件结构,并用以下命令锁定安全权限和所有权:
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 = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi" # 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 -tc /etc/bacula/bacula-dir.conf
如果您返回 shell 提示,则 Bacula Director 配置文件中没有语法错误。
重新启动 Bacula 导演
要实现您所做的配置更改,请重新启动 Bacula Director:
1sudo service bacula-director restart
现在您的客户端或远程主机已配置为由您的 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
这会让您陷入一个虚拟的文件树中,其中包含您备份的整个目录结构,这种壳式界面允许简单的命令来标记和解标文件以恢复。
因为我们指定了我们想要恢复所有
,每个备份的文件已经被标记为恢复,标记的文件被标记为一个领先的*
字符。
如果你想精心调节你的选择,你可以导航和列出用ls
和cd
命令的文件,标记文件以恢复为标记
,并卸载文件以无标记
。
当您完成恢复选择时,继续键入:
1done
确认您想运行恢复任务:
1[secondary_label OK to run? (yes/mod/no):]
2yes
查看消息和状态
与备份工作一样,在运行恢复任务后,您应该检查消息和管理员状态。
通过键入查看消息:
1messages
应该有一个消息,表示恢复工作已经开始或以恢复OK
状态结束. 如果有任何错误,有什么不对劲,他们应该给你一个提示,为什么工作没有运行。
再次,检查管理员状态是查看恢复工作状态的好方法:
1status director
当您完成恢复时,键入退出
,离开 Bacula Console:
1exit
如果一切正常工作,你的恢复的文件将在您的客户端主机,在/bacula/restore
目录. 如果你只是测试恢复过程,你应该删除该目录的内容。
结论
您现在有一个 Bacula 服务器,从远程的 Bacula 客户端备份文件。 请确保查看并修改您的配置,直到您确定您正在备份正确的 FileSets,根据符合您的需求的日程安排。 如果您正在尝试创建 CentOS 7 主机的备份,请遵循此链接: 如何备份 CentOS 7 服务器与 Bacula.
您应该做的下一步是重复本教程的相关部分,用于您想要备份的任何额外的 Ubuntu 14.04 服务器。