我有几个运行 ubuntu 11.04 的小型虚拟专用服务器。我目前有 VirtualMin 管理服务器的备份,但是,它只备份用户的主文件夹和与现在 Apache 或 FTP 或诸如此类的东西有关的各种配置,以支持单个虚拟主机。
我想做一些更强大的事情。我希望能够在紧急情况下获取最新的备份,将其移动到新的 VPS 并解压缩/解压缩它,并让新的 VPS 基本上是旧的 VPS 的克隆。
目前所有备份都存储在 Amazon S3 上,我希望保持这种状态。我还想避免依赖特定工具来进行恢复(即存储在自定义/专有二进制文件中)。
本质上,我如何备份我的服务器,以便我可以将备份解压缩到新服务器中并让它们以相同的方式运行。我知道数据库有特殊的考虑因素,我已经有了 MySQL 的备份策略。
使用 TAR 备份
linux 的美妙之处在于一切都是文件。由于一切都是文件,因此备份和恢复系统所需要做的就是将所有文件复制回来(下面提到的一些例外情况)。假设 VPS 配置设置了基本操作系统,您可以简单地 tar 和 gzip 整个文件系统并将 tar.gz 文件保存在某个地方。恢复只是在现有文件上解开它的问题,最好是在单用户模式下。
稍微简单一点的方法
我以前用过 tar 方式并且它有效,但我更喜欢设置 rdiff-backup 和 backupninja - 这使得进行增量备份真的很容易。这种方法有几个优点:
排除什么
在任何一种情况下,都有一些目录您可能不需要备份或不想恢复:
/lost+found
- 这是当您的文件系统损坏并且 fsck 尝试修复问题时文件所在的位置。如果事情就此结束,您可能更愿意从昨天的备份中恢复。/mnt
并且/media
- 取决于安装在那里的内容,如果您在那里安装远程文件系统,您可能不想使用本地系统的映像来备份它们/proc
- 这是一个特殊的进程文件系统 - 当您创建一个新的 VPS 并且不需要恢复时,它将成为您的基本操作系统的一部分/sys
和/dev
- 有关驱动程序和硬件的信息 - 将成为新操作系统安装的一部分,覆盖可能会破坏一切/tmp
- 临时文件通常不需要备份,可以在那里创建大文件以占用备份空间/var/cache/ap
t - 这是 apt 存储它下载的软件包的地方,因此可以轻松地重新安装它们。我懒得备份它,因为它会变得很大,而且里面的所有东西都可以很容易地再次下载就像 apt 缓存一样,您可能有其他目录包含大量易于重新下载的文件,因此请排除这些目录。在 S3 中为可以再次下载的文件支付存储费用毫无意义。
测试你的备份!
备份是没有用的,除非你可以恢复它们。由于您使用的是 VPS,因此在不影响主服务器的情况下启动新虚拟机并恢复到该虚拟机应该非常容易。大多数 VPS 提供商只按实际运行的小时数/天数收费,因此只需花费几美元。
准确记下如何恢复您的备份,以及您在测试它们时克服的任何问题 - 当真正的时间到来时,您会感到压力很大,最好有笔记来指导您完成整个过程。
其他陷阱
如果您要恢复到不同的机器,他们可能提供了不同的 IP 地址。确保
/etc/network/interfaces
在恢复后立即更改以匹配您的新 IP 地址,否则重启将锁定您。还要检查您正在使用的任何防火墙程序,看看是否需要更改任何内容。如果这不是测试并且您要真正恢复到不同的服务器,您还需要更改服务器软件配置和 DNS 服务器中的 IP 地址。只有恢复到相同的操作系统版本,这种方式才能顺利恢复。例如,恢复到较新版本的 Ubuntu 会破坏某些东西,有时会以奇怪的方式出现,直到数周或数月后您才注意到。如果你必须恢复到不同的版本,你最好只复制配置文件和用户数据,并通过操作系统安装任何软件,就像它是一个新的设置一样。