从一个专用的Linux服务器迁移到另一个?

我有一个专用的服务器运行Ubuntu的服务器9.04networking,数据库和邮件。 整个硬盘上大约有5 GB的数据。

我想将服务器迁移到更实惠的专用服务器提供商,但我不确定如何执行此操作。

  • 我可以克隆整个硬盘吗? 硬件特定的文件/目录呢?
  • 或者,也许有一个更好的方法?
  • 未来托pipe可能会有另一个版本的Ubuntu,所以我应该在迁移之前升级我们的当前服务器? 如何移植Apache,MySQL和后缀?

我的build议是采取一切备份,并在新的服务器上恢复。 即:

  1. 转储数据库并在新服务器上恢复它们
  2. 复制networking服务器,数据库,电子邮件configuration新的

当然,这需要一点点的停机时间。 为了缩短停机时间,您可以做一些事情:

  1. 为所有电子邮件数据执行以前的rsync,然后在configuration和testing的所有内容都停止在旧服务器上的服务之后,rsync仅更新新数据并启动新服务器。
  2. 使用mysql复制保持两台服务器上的数据,直到“切换”
  3. rsync方法可以与所有其他数据一起使用(甚至db,但我build议您使用转储或复制来最小化错误的select)。

另外请记住,这是一个需要仔细计划和执行的程序,否则可能会发生数据丢失。

您可能有兴趣探索使用FSArchiver的可能性, http: //www.fsarchiver.org/Main_Page

我通过反复试验学到的一些相关的东西(主要是错误):

  • 当你走的时候logging下你的步骤,这样下一次你就有logging(下次总会有的)。 这样你就不会忘记任何步骤,并且允许别人也这样做。
  • 如果您可以逐个切换组件,则诊断问题将更加容易。 例如,将邮件/数据库保留在原始服务器上,并将Web服务器移到新服务器。 如果您的应用程序无法轻松处理跨服务器,请跳过此操作,但如果您需要将系统扩展到多个服务器,则需要考虑这一点。 如果您需要最大限度地减less停机时间,此方法特别有用。
  • 我不会尝试将原始数据库文件从一台服务器复制到另一台服务器,除非您确定数据库支持它。 如果你只有几个100MB的数据库,我只需在旧的服务器上创build一个转储,然后在新的服务器上恢复。 对于较大型的数据库来说,设置复制的速度会更快。
  • 如果使用rsync或scp将文件从一台服务器复制到另一台服务器,请确保您使用的用户具有所有文件的读取权限。 例如,我曾经使用rsync从/ etc复制了一些文件,但没有读取某些文件的权限。 当我发现有些文件丢失的时候已经太晚了(旧的服务器被擦除了)。 从那时起,我一直使用tar作为旧服务器上的root来备份目录,然后使用rsync / scp tar归档。

如果你find了你的新供应商,你问他们他们喜欢这样做吗? 您可能想了解从/到环境的详细信息,包括硬件,以select最佳方法。

此外,询问移植的便利性和可用的支持可能会帮助您select新的提供商!