如何为多个基于 Linux 的服务器提供适当的备份?

如何为多个基于 Linux 的服务器提供适当的备份?

已经有几个与提供备份相关的问题,但大多数问题要么过于具体,要么针对家庭使用,要么基于 Windows。

我想听到的是:

  • 如何确保所有 Linux 服务器均已正确备份?
  • 您多久备份一次服务器?
  • 除了明显的 /home 目录之外,您还备份什么?
  • 如何确保备份是增量的,但仍然易于恢复?

尤其是最后一个问题一直困扰着我。将备份压缩成 tarball 没问题,但当我突然需要恢复备份时,会导致严重的性能问题。另一方面,如果不压缩备份并将其同步到另一台服务器,则存在创建不一致用户权限的严重风险。

哪些工具可以帮助您尽可能轻松地完成此操作以及您喜欢采用哪种方法来处理此问题?

答案1

您多久备份一次服务器?

标准备份每晚进行一次,但也有一些备份进行得更频繁。

如何确保所有 Linux 服务器均已正确备份?

备份会发送一份主题明确的成功或失败报告。我每周至少检查几次是否收到了状态消息。

除了明显的 /home 目录之外,您还备份什么?

取决于服务器,但我几乎总是需要 /etc、/root 和 /var/lib/dpkg。然后我添加任何数据目录。

如何确保备份是增量的,但仍然易于恢复?

我用迪尔维什

Dirvish 是一种快速、基于磁盘的旋转网络备份系统。

使用 dirvish,您可以维护文件系统的一组完整映像,无需人工干预即可创建和过期。dirvish 备份库就像是数据的时光机。

Dirvish 使用 rsync 和--link-目标选项可将每个备份的相同文件硬链接在一起。备份速度快,不会浪费空间,恢复就像复制文件一样简单。

答案2

* How do you ensure that all of your Linux servers are properly backed up?

我跑表里不一在它们上面,备份到亚马逊 S3。

* How often do you backup your servers?

我每季度进行一次完整备份,每晚进行一次增量备份。这主要是为了减少 S3 的存储成本。

* What do you backup, apart from the obvious /home directories?

/home、/etc 和 /var。我运行一个 debian 机器,因此我每晚也会执行一次“dpkg --get-selections >/etc/debian.pkgs”,这样我就可以跟踪已安装的内容。

* How do you ensure that backups are incremental, but still easy to restore?

duplicity 在这方面做得很好。我偶尔会通过从历史的某个点进行恢复来测试它。

答案3

  • 它们完全自动备份,并且所有备份都受到监控,以确保它们成功完成(如备份软件所报告的那样)。这种监控至关重要,因为它“闭合”备份循环,以确保它们成功运行。
  • 通常是每天一次,尽管某些系统(数据库服务器)偶尔会获得更有趣的策略。
  • 软件包列表、/etc/var/home其他所有内容都可以从那里重新创建。
  • 我在家使用 dirvish,它只是使用 rsync 创建文件的硬链接树。它做得很好,但需要以 root 身份运行 rsync(以确保维护权限),并且从 inode 消耗的角度来看对文件系统很不利。在工作中我们使用 rdiff-backup,虽然它有自己的一套理念,但它将权限存储在元数据文件中,因此您不需要 root 权限来写入备份(但需要运行显式恢复才能恢复权限)。

答案4

如何确保所有 Linux 服务器均已正确备份?

我们每晚都会运行 rdiff-backup。我们有一个位于 /usr/local/bin 中的脚本,该脚本每晚都会在 cron 中运行。

为了确保它能正常工作,我们使用 nagios 检查 /var/log/messages 的副本是否不超过 48 小时。如果是,我们可以在 nagios 网页和 nagios 将发送给管理员的电子邮件中看到这一点。

您多久备份一次服务器?

每天晚上。

除了明显的 /home 目录之外,您还备份什么?

我们备份了所有内容,除了一些被排除的部分 - /tmp /proc /sys 和 /var/log/ 中的某些内容

如何确保备份是增量的,但仍然易于恢复?

我们用rdiff-备份(另见本教程)。rdiff-backup 会生成一个目录,其中包含您要复制的内容的完整最新副本,但会保留与之前备份的差异,因此您可以恢复差异之前的文件。您可能偶尔会想要删除旧的差异(以节省空间),有一个 rdiff-backup 命令可以用于此,可以通过 cron 每周运行一次。

相关内容