状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
红色是什么意思
用户需要输入或自定义的行在本教程中将显示为红色! 其余的大部分应该是可复制粘贴的。
介绍
Bacula 是一种复杂的备份解决方案,可以通过利用客户端-服务器模型来处理本地和远程备份。 它具有非常灵活的配置选项,可以完全控制备份环境。
在本指南中,我们将设置涉及备份云服务器和将完全备份的客户端计算机的远程备份。
您将需要两个单独的服务器实例。 必须根据 在 Ubuntu 12.04 VPS 指南上安装和配置 Bacula 中概述的配置设置第一台服务器。 第二台服务器将是另一台 Ubuntu 12.04 机器。
就本指南而言,备份 VPS 的主机名为 BackupServer,而客户端计算机 ' 的主机名为 ClientMachine。 更改这些值以反映您正在使用的机器的服务器名称。
目录
客户端安装
本地备份不会存储在远程客户端计算机上,因此不需要安装所有 bacula 组件。
通过 apt-get 使用 bacula-client 元包在这台机器上安装 bacula-fd(文件守护程序)和 bconsole(bacula 控制台):
sudo apt-get update sudo apt-get install bacula-client
必要的组件现在已安装并准备好进行配置。
客户端机器配置
客户端环境的配置相对简单。 我们将只编辑 bacula 文件守护程序配置文件。 使用以下命令以 root 权限打开文件:
sudo nano /etc/bacula/bacula-fd.conf
我们需要更改一些项目并保存服务器配置所需的一些信息。 首先找到 Director 部分。
bacula director 位于备份 VPS 上。 将“名称”参数更改为备份服务器的主机名,后跟“-dir”。
您还需要将 bacula 为您的客户端文件守护程序生成的密码复制到配置备份服务器设置时可用的某个位置:
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 部分并更改“director”参数以匹配您的备份云服务器 ' 的名称。
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 “主管”管理所有其他 bacula 进程,并且必须能够与许多不同的组件正确通信。
首先,使用管理员权限打开“bacula-dir.conf”文件:
sudo nano /etc/bacula/bacula-dir.conf
作业配置
首先找到 Job 部分。 当前配置名为“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 }
客户端配置
找到 Client 定义。 我们将更改“地址”参数以反映我们实际的备份云服务器 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 }
下一步是实际定义我们在配置中引用的客户端机器。 复制我们刚刚修改的 Client 条目,将其粘贴到当前定义的下方。 这个新定义将用于我们正在备份的远程机器。
将该名称与您的客户端计算机的主机名匹配,后跟“-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 }
存储配置
接下来,将 Storage 部分中的“地址”参数更改为备份 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 }
池配置
找到 Pool 定义部分。 我们将首先向“文件”池定义添加一个参数。 将“标签格式”参数添加到定义中,并选择一个前缀来命名本地文件备份。 对于本指南,本地备份将以“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
如果您继续检查消息,最终您将收到备份操作的摘要。 如果一切按预期进行,它应该包含“终止:备份正常”行。
测试远程恢复
现在,测试恢复功能:
restore all
选择“选择客户端的最新备份”选项。 选择我们刚刚备份的远程客户端:
5: Select the most recent backup for a client
2: ClientMachine-fd
您将被放入文件树中,您可以在其中选择要使用“标记”和“取消标记”命令恢复的文件。
我们选择恢复所有内容,因此我们只需键入“完成”即可继续。 选择我们为远程恢复定义的作业并输入“yes”以运行恢复:
done
2: RestoreRemote
同样,您可以使用“状态”和“消息”命令检查恢复情况。 您最终应该会在包含“终止:恢复正常”行的消息中获得摘要。 这意味着恢复成功。 键入“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
如您所见,我们已将文件系统正确还原到该文件夹。