VPS的备份和恢复策略

我有几个运行Ubuntu 11.04的小型虚拟专用服务器。 我目前有VirtualMinpipe理备份的服务器,但是,它只备份用户的家庭文件夹和各种事情的configuration现在的Apache或FTP或未设置支持单个虚拟主机。

我想做一些更强大的事情。 我希望能够在紧急情况下能够采取最新的备份,将其转移到一个新的VPS,并解压缩,并使新的VPS基本上克隆旧的。

目前所有的备份都存储在Amazon S3上,我想保留这种方式。 我也想避免依赖特定的工具来进行还原(即存储在自定义/专有二进制文件中)。

从本质上讲,我怎样才能备份我的服务器,以便我可以将备份解包到新的服务器上,并使它们的行为方式相同。 我知道数据库有特殊的考虑,我已经有了MySQL的备份策略。

备份与TAR

关于Linux的美丽的事情是,一切都是一个文件。 由于一切都是一个文件,所有你需要做的备份和恢复你的系统是复制所有文件回来(除了下面提到的一些例外)。 假设VPSconfiguration设置了基本操作系统,您可以简单地tar和gzip了整个文件系统并将tar.gz文件保存在某个地方。 恢复只是在现有文件上进行parsing,最好是在单用户模式下。

一个稍微简单的方法

我已经完成了tar的方式,它的工作原理,但我更喜欢设置rdiff备份和backupninja – 这使得增量备份非常容易。 这种方法有几个优点:

  • 您不必编写自己的备份脚本,只需通过几个conf文件和一个基于文本的菜单进行configuration即可。 您可以编写自己的脚本来完成其他function,而无需从头开始
  • 它确保在文件系统备份之前进行SQL备份,以导出到不会轻易破坏的.sql文件
  • 增量备份让你保持更多的历史,而不占用更多的空间。 例如,您可以将整个系统或单个文件恢复到上个月的任何一天。 如果人们没有意识到一个文件已经被删除或者被破坏了,那么这是非常重要的!
  • 由于它使用rsync来传输文件,因此比每晚使用tar文件占用的带宽要less很多。
  • 它仍然只是一堆文件 – 没有专有的文件格式或任何东西。 你可以恢复你的文件,只需要复制它们(尽pipe通过rdiff-backup恢复使它更容易)

什么排除

在任何一种情况下,都有一些您可能不需要备份或想要恢复的目录:

  • /lost+found – 当文件系统被损坏,fsck试图修复某些东西时,这就是文件的位置。 如果事情最终在这里结束,你可能宁愿从昨天的备份恢复。
  • /mnt/media – 取决于挂载的内容,如果你挂载了远程文件系统,你可能不想用本地系统映像
  • /proc – 这是一个特殊的进程文件系统 – 当您创build一个新的VPS并且不需要恢复时,它将成为您的基本操作系统的一部分
  • /sys/dev – 有关驱动程序和硬件的信息 – 将成为新操作系统安装的一部分,覆盖可能会破坏事情
  • /tmp – 临时文件通常不需要备份,可以创build大文件以占用备份空间
  • /var/cache/ap t – 这是存储下载的软件包的地方,所以可以很容易地重新安装。 我不打扰它的支持,因为它可以变得巨大,并且可以轻松地再次下载所有内容

就像aptcaching一样,你可能有其他的目录包含大量容易下载的文件,所以排除这些。 没有意义在S3中支付文件的存储成本,你可以再次下载。

testing你的备份!

备份是不好的,除非你可以恢复它们。 由于您使用的是VPS,因此您可以轻松启动新的虚拟机并在不影响主服务器的情况下进行恢复。 大多数VPS提供商只收取实际运行的小时数,因此只需花费几美元就能完成。

准确地logging如何恢复备份,以及在testing时如何克服任何问题 – 当真正的时间到来时,你将会被强调,并且有笔记来指导你完成整个过程。

其他陷阱

如果您要恢复到不同的机器,他们可能提供了不同的IP地址。 确保在恢复之后立即更改/etc/network/interfaces以匹配新的IP地址,否则重新启动会将您locking。 另外检查你正在使用的任何防火墙程序,看看是否有什么需要改变。 如果这不是一个testing,而且您正在恢复到不同的服务器,那么您还需要更改服务器软件configuration和DNS服务器中的IP地址。

如果恢复到相同的操作系统版本,恢复这种方式只会顺利进行。 例如,恢复到较新版本的Ubuntu会破坏一些事情,有时甚至会在几个星期或几个月后才会注意到。 如果您必须恢复到不同的版本,则最好只复制configuration文件和用户数据,并通过操作系统安装任何软件,如新安装。