介绍
本教程将向您介绍如何设置Bacula通过网络连接创建远程Ubuntu 14.04主机的备份。 这包括在远程主机上安装和配置Bacula Client软件,并对现有Bacula服务器的配置进行一些添加(在前提条件中包括)。
如果您正在尝试创建的CentOS 7的主机备份,请点击此链接来代替: 如何备份一个CentOS 7服务器与Bacula的 。
先决条件
本教程假定你有一台服务器运行Bacula的服务器组件,在这个环节中描述: 如何在Ubuntu 14.04安装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
在文件末尾添加,这行:
@|"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
添加以下池资源:
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的安装任何客户端主机本节。
首先,更新apt-get:
sudo apt-get update
然后安装bacula-client
包:
sudo apt-get install bacula-client
这将安装Bacula文件守护进程(FD),它通常被称为“Bacula客户端”。
配置客户端
在配置客户端文件守护程序之前,您需要查找以下信息,这将在本教程的剩余部分中使用:
- 客户端主机:我们的例子将使用“CLIENTHOST”
- 客户专用FQDN:我们称这种现象为“client_private_FQDN”,这可能看起来像
clienthost.private.example.com
- Bacula的服务器主机名:我们的例子将使用“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
,这是用于连接到文件守护程序自动生成的密码,并妥善保管以备将来参考。 这将在Backup Server的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
}
我们还需要配置此守护程序将其日志消息传递到备份服务器。 查找信息资源,改变director
参数到备份服务器的主机名带有“-dir”Stapling匹配。 它应该看起来像这样:
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服务器可以恢复文件的目录。 使用以下命令创建文件结构并锁定安全性的权限和所有权:
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:
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
),其中强调:
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”的备份作业,它将备份客户端主机的home和etc目录,如“Home and Etc”FileSet中定义。 它将使用在“DefaultJob”JobDefs和“RemoteFile”池资源,这是在主两个定义中指定的设置bacula-dir.conf
文件。 默认情况下,作业指定JobDefs = "DefaultJob"
将每周运行一次。
保存并完成后退出。
验证控制器配置
让我们验证您的Director配置文件中没有语法错误:
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
如果返回到shell提示符,则Bacula Director的配置文件中没有语法错误。
重新启动Bacula Director
要使您生效的配置更改生效,请重新启动Bacula Director:
sudo service bacula-director restart
现在,您的客户端或远程主机被配置为由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的服务器 ,同时还在控制台,使用此命令:
run
系统将提示您选择要运行的作业。 选择我们之前创建的,例如“4. BackupClientHost”:
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客户端时,您应该测试恢复是否正常工作。
如果要执行恢复,使用restore
在Bacula的控制台命令:
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客户端备份文件。 请确保查看和修改配置,直到您确定要按照满足您的需要的时间表备份正确的文件集。 如果您正在尝试创建的CentOS 7的主机备份,请点击此链接: 如何备份一个CentOS 7服务器与Bacula的 。
你应该做的下一件事是重复本教程的相关部分为任何额外的Ubuntu 14.04服务器,你想备份。