我有几个运行 ubuntu 11.04 的小型虚拟专用服务器。我目前使用 VirtualMin 管理服务器的备份,但它只备份用户的主文件夹和各种与现在的 Apache 或 FTP 或诸如此类的配置,以支持单个虚拟主机。
我想做一些更强大的事情。我希望能够在紧急情况下,能够获取最新的备份,将其移动到新的 VPS 并解压缩/解压,并使新 VPS 基本上成为旧 VPS 的克隆。
目前所有备份都存储在 Amazon S3 上,我希望保持这种状态。我还希望避免依赖特定工具进行恢复(即存储在自定义/专有二进制文件中)。
本质上,我如何备份我的服务器,以便我可以将备份解压到新服务器中并让它们以相同的方式运行。我知道数据库有特殊注意事项,我已经有了 MySQL 的备份策略。
答案1
使用 TAR 备份
Linux 的妙处在于一切都是文件。由于一切都是文件,因此备份和恢复系统只需将所有文件复制回来(下面提到的几个例外情况除外)。假设 VPS 配置设置了基本操作系统,您只需将整个文件系统打包成 tar 并进行 gzip 压缩,然后将 tar.gz 文件保存在某处。恢复只需将其解压到现有文件上,最好是在单用户模式下。
稍微简单一点的方法
我以前用过 tar 方法,而且很有效,但我更喜欢设置 rdiff-backup 和 backupninja - 这使得增量备份变得非常容易。此方法有几个优点:
- 您不必编写自己的备份脚本,只需通过几个 conf 文件和一个基于文本的菜单进行配置即可。您可以编写自己的脚本来实现其他功能,而无需从头开始
- 它确保在文件系统备份之前进行 SQL 备份,以便导出到不容易损坏的 .sql 文件
- 增量备份可让您保留更多历史记录,而无需占用更多空间。例如,您可以将整个系统或单个文件恢复到上个月的任何一天。如果人们没有立即意识到文件已被删除或损坏,这一点很重要!
- 由于它使用 rsync 来传输文件,因此比执行夜间 tar 文件占用的带宽要少得多。
- 它仍然只是一堆文件 - 没有专有文件格式或任何东西。如果您愿意,只需复制文件即可恢复它们(尽管通过 rdiff-backup 恢复会更容易)
排除什么
无论哪种情况,都有一些目录您可能不需要备份或不想恢复:
/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 会破坏一些东西,有时会以奇怪的方式出现,直到几周或几个月后你才会注意到。如果您必须恢复到不同的版本,最好只复制配置文件和用户数据,并通过操作系统安装任何软件,就像它是一个新设置一样。