我正在尝试将我的实时服务器操作系统安装复制到本地的一台机器上,这样如果出现问题,我们就可以备份。我已经在此服务器上安装了与我们实时系统相同的操作系统版本,但我想确保我可以复制所有相同的软件包并尽可能复制环境。这是一个快速修复,而不是永久解决方案。
我备份了所有配置文件Jungle Disk
以及站点文件等。但我想镜像已安装的软件包,并希望能够尽可能少地完成工作。有什么建议吗?
更新
导入 debconf 选择 显示 3 个错误...
warning: Unknown type terminal, skipping line 56
warning: Unknown type error, skipping line 76
warning: Unknown type detect-keyboard, skipping line 252
以下是我的文件中的一些片段:
#
tasksel tasksel/terminal terminal
# Detecting your keyboard layout
console-setup console-setup/detect detect-keyboard
# Failure restarting some services for PAM upgrade
libpam0g libpam0g/restart-failed error
我实际上还遇到了另外 8 个错误,所有这些错误都Unknown type error
与我继续操作时此镜像的稳定性有关
答案1
在 Debian 衍生系统(如 Ubuntu)上,可以使用包管理工具将软件安装从一台机器复制到另一台机器。假设 MachineA 是您要镜像的原始服务器,MachineB 是您要成为 MachineA 镜像的服务器。(此处引用的所有命令都必须以 的身份运行root
。)
首先,确保该debconf-utils
包已安装在 MachineA 和 MachineB 上(在两台服务器上运行以下命令):
aptitude update && aptitude install debconf-utils
接下来,在 MachineA 上,复制当前包状态和 debconf 数据库:
dpkg --get-selections > /root/dpkg-selections.txt
debconf-get-selections > /root/debconf-selections.txt
将两个文件从MachineA复制到MachineB,例如:
scp /root/{dpkg,debconf}-selections.txt MachineB:
现在在 MachineB 上,加载 debconf 选择文件
debconf-set-selections /root/debconf-selections.txt
加载包选择文件
dpkg --clear-selections && dpkg --set-selections < /root/dpkg-selections.txt
最后,运行包管理器来更新系统的软件安装
aptitude install
现在剩下的就是将任何需要的配置文件从/etc
MachineA 移到 MachineB。最好手动完成,因为有些文件在两台机器上需要有所不同,即使它们是彼此的镜像。例如,像/etc/hostname
、/etc/network/interfaces
和 这样的文件/etc/fstab
反映了它们各自本地系统的内容,而这些内容在另一台机器上可能(或必须)有所不同。要生成要考虑从 MachineA 复制到 MachineB 的配置文件列表,您可以rsync
在“试运行”模式下使用,其中实际上不会复制任何内容,但会列出要复制的文件,例如(来自 MachineB):
rsync -rplgoDvn MachineA:/etc/ /etc
附录
生成警告和错误消息并不罕见debconf-set-selections
。我自己也见过很多次,我不知道为什么会出现这种情况,但我不记得曾经发现它们表示实际的配置损坏的实例。
如果您心存疑虑,并希望消除您的担忧,您可以通过以下步骤验证所有软件包配置是否正常:创建生成警告/错误的所有软件包的列表,然后dpkg-reconfigure package
针对该列表中的每个软件包手动运行。如果有任何真的包中存在的问题,应该通过重新配置操作来暴露和/或修复它们。
答案2
我个人认为这只是一个备份机会,而不是尝试将系统复制到另一个实时运行的系统。只需使用 rsync 或 rdiff-backup 将整个新系统复制到旧系统即可。rdiff-backup 的好处是您可以轻松获得数据的多个副本。
在原始服务器上,类似 rsync 备份的命令示例如下:
rsync -a --exclude=/proc/ --exclude=/dev/ --exclude=/sys/ / root@backup:/path/to/backups/origin-root/
这将在目标上创建系统的完整副本。从那里,您可以随时恢复所需的任何配置,而不必担心覆盖需要在新服务器上保留的配置(例如:fstab、主机、主机名、网络、udev 持久网络规则等...)。
答案3
在旧机器上:
dpkg --get-selections >/tmp/mypackagelist
将文件复制到备份机器并:
cat mypackagelist | xargs apt-get -y install
(这必须以超级用户身份完成)。
更多详情请访问这个老问题。