什么是红色表示
用户需要输入或定制的生产线将在红色在本教程! 其余的应该主要是复制和粘贴。
介绍
Bacula是一个复杂的备份解决方案,可以通过利用客户端 - 服务器模型来处理本地和远程备份。 它具有非常灵活的配置选项,可以完全控制备份环境。
在本指南中,我们将设置远程备份,涉及备份云服务器和将完全备份的客户端计算机。
您将需要两个单独的服务器实例。 第一个服务器必须根据在列出的配置设置安装和配置的Bacula的Ubuntu 12.04 VPS指南。 第二个服务器将是另一个Ubuntu 12.04机器。
对于本指南的目的,备份VPS有BackupServer的的主机名和客户机的主机名是ClientMachine。 更改这些值以反映正在使用的计算机的服务器名称。
目录
客户端安装
没有本地备份将存储在远程客户端计算机上,因此不需要安装所有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
如您所见,我们已将文件系统正确还原到此文件夹。