我有几个运行Ubuntu 11.04的小型虚拟专用服务器。 我目前有VirtualMinpipe理备份的服务器,但是,它只备份用户的家庭文件夹和各种事情的configuration现在的Apache或FTP或未设置支持单个虚拟主机。
我想做一些更强大的事情。 我希望能够在紧急情况下能够采取最新的备份,将其转移到一个新的VPS,并解压缩,并使新的VPS基本上克隆旧的。
目前所有的备份都存储在Amazon S3上,我想保留这种方式。 我也想避免依赖特定的工具来进行还原(即存储在自定义/专有二进制文件中)。
从本质上讲,我怎样才能备份我的服务器,以便我可以将备份解包到新的服务器上,并使它们的行为方式相同。 我知道数据库有特殊的考虑,我已经有了MySQL的备份策略。
备份与TAR
关于Linux的美丽的事情是,一切都是一个文件。 由于一切都是一个文件,所有你需要做的备份和恢复你的系统是复制所有文件回来(除了下面提到的一些例外)。 假设VPSconfiguration设置了基本操作系统,您可以简单地tar和gzip了整个文件系统并将tar.gz文件保存在某个地方。 恢复只是在现有文件上进行parsing,最好是在单用户模式下。
一个稍微简单的方法
我已经完成了tar的方式,它的工作原理,但我更喜欢设置rdiff备份和backupninja – 这使得增量备份非常容易。 这种方法有几个优点:
什么排除
在任何一种情况下,都有一些您可能不需要备份或想要恢复的目录:
/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文件和用户数据,并通过操作系统安装任何软件,如新安装。