将 Ubuntu 服务器从一台机器移动到另一台机器的正确方法是什么?

将 Ubuntu 服务器从一台机器移动到另一台机器的正确方法是什么?

现在已经尝试了三次,但都没有成功,所以希望有人能给我指明正确的方向?

我正在尝试将我的 Ubuntu 14.04 服务器从一台物理机器移动到另一台物理机器。我使用以下 rsync 命令来实现此目的:

rsync -aAXvP --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} root@iphere:/* /

rsync正在正确移动文件,无需重启,我就能运行原始服务器中的某些服务,但是,重启后(启动其他服务),我现在看到一个无限的“Ubuntu 加载”屏幕。你知道那个每秒向右移动的点。

最初的问题是找不到启动设备,所以之后rysnc,我将 UUID 更改为我之前的服务器的 UUID。这导致 Ubuntu 无法启动;所以更进一步。然而,我现在有点迷茫,因为没有错误消息,而且我无法对机器进行任何物理操作,因为它是一台 VPSVultr

现在想想,当我最终让事情顺利进行时,网络就会完全失灵。

我对 Linux 和命令行还很陌生,因此非常感谢任何帮助。

还值得一提的是,我之所以采用这种方法,是因为我想让新服务器与旧服务器/当前服务器保持完全相同,重建服务器是不可能的。我根本没有时间。

答案1

这不是你使用的方法——我认为这种技术很“幼稚”——但对我来说,这种方法很可靠。当然,你可能需要对 Linux 的工作原理有所了解,才能做出调整。我改编自SF 的答案稍作调整

这种方法的问题是某些配置文件最好不是重复——没有实际理由复制 grub 的配置,或者/etc/networks

我认为正确的做法是使用 dpkg --get-selections 转储已安装软件包的列表,然后使用 dpkg --set-selections 安装它们。如有必要,创建与源系统相同的用户 -cat /etc/passwd应列出它们,您可以使用 diff 检查两个列表是否相同。然后使用 rsync 复制您的/etc/设置文件夹(尽管如果您使用静态 IP 检查或省略 /etc/networks)、/home/用户的各种文件夹(并在此处检查权限)和其他文件夹,例如/var/www/

我建议暂存 /etc/,然后将配置文件复制到位,特别是因为那是可能的破损点。

测试,确保一切就绪,然后就大功告成了。这比设置一个新服务器花费的时间还少。

这里有一些“好”的东西。你可以确保那些不应该手动完成的事情不会发生——包管理和 grub 之类的东西保持一致。它允许你移动最低限度文件 - be独家的不是包括的你移动的东西。

答案2

更改 UUID 是个好主意。但问题是,虽然系统现在可能在技术上可用,但您需要确保几件事。所有这些说明均基于我使用 Ubuntu 12.04 设置服务器的说明:

网络调整:不确定旧设置的网络设置与它们应该在什么位置Vultr,但很有可能需要进行调整。如果您可以登录到机器,我建议您运行ifconfig以获取接口数据的原始读数。就网络调整而言,这将发生在/etc/network/interfaces其中,可以像这样查看/编辑:

sudo nano /etc/network/interfaces

话虽如此,如果你能访问机器,那么很有可能存在 DHCP 设置?无论如何,我都会查看那里以进行更改,如果你不确定如何操作,请联系 Vultr 支持,告诉他们你做了什么以及需要更改什么。我确信他们会立即回复你,并提供一份你应该调整的网络设置的小列表。

更新 Grub:这可能是也可能不是一个问题,但您应该登录并运行以下命令:

sudo update-grub2

这将强制系统更新 Grub 引导加载程序设置。但是,如果您注意到延迟,则可能是 Grub 引导加载程序设置本身超时。有时(老实说,我很难确定何时或如何)Grub 似乎会永远挂起,等待用户选择引导设备。如果您 100% 确定您不需要引导到除现有 Ubuntu 内核之外的任何系统,我建议您调整此文件中的默认 Grub 设置:

sudo nano /etc/default/grub

找到这一行:

GRUB_TIMEOUT=2

现在将其注释掉(或删除),然后用这个新设置以及GRUB_RECORDFAIL_TIMEOUT如下附加设置替换它:

GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

现在再次运行 Grub 更新命令:

sudo update-grub2

看看重启时会发生什么。如果这是这个问题,那么与以前相比,重启应该相当快。

除此之外,您还声明:

还值得一提的是,我之所以采用这种方法,是因为我想让新服务器与旧服务器/当前服务器保持完全相同,重建服务器是不可能的。我根本没有时间。

那么,在迁移、设置困惑和现在解决问题之间,您实际上节省了多少时间?这是否是表面上节省的时间问题,但实际上并没有真正节省时间?

别误会我的意思,我很乐意提供帮助。但一般来说,我设置 Linux 服务器的方式(我主要处理 Ubuntu)是,我有一个经过充分测试的公式,可以从头开始创建一个可靠的基础服务器。现在我大约需要 1 小时来完成这项工作;根据系统速度等因素,可能需要更长时间。但一旦我打下了坚实的基础,应用程序和用户的配置几乎就成了事后才想到的事情。

因此,对节省时间的看法可能会让我们面对纯克隆复制的未知现实,如下所示:通过从干净的 Linux 发行版开始安装,然后在其基础上构建坚实的基础,您基本上可以使所有 Linux 系统更具可移植性,而不会出现像这样的克隆过程的不可预见的“陷阱”。

相关内容