重复的操作系统安装

我试图在本地机器上复制我的实时服务器操作系统安装在这里,所以如果出现问题,我们有一个备份。 我已经在服务器上安装了与我们的实时系统相同的操作系统版本,但是我想确保我可以复制所有相同的软件包并尽可能地复制环境。 这是一个快速修复,而不是一个永久的解决scheme。

我有所有的configuration文件备份在Jungle Disk以及站点文件和所有这一切。 但是我想要镜像安装的软件包,并希望能尽可能less的工作。 有什么build议?

更新

导入debconf选项显示3个错误…

 warning: Unknown type terminal, skipping line 56 warning: Unknown type error, skipping line 76 warning: Unknown type detect-keyboard, skipping line 252 

这里是我的文件中的一些snipplets:

 # 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 ,我担心这个镜像的稳定性,如果我继续

在Ubuntu这样的Debian衍生系统中,通过使用包pipe理工具,可以非常接近地将软件安装从一台机器复制到另一台机器。 假设MachineA是要镜像的原始服务器,而MachineB是要成为MachineA镜像的服务器。 (这里引用的所有命令必须以root身份运行。)

首先,确保在MachineA和MachineB上安装了debconf-utils软件包(在两台服务器上运行以下内容):

 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上,加载debconfselect文件

 debconf-set-selections /root/debconf-selections.txt 

加载包select文件

 dpkg --clear-selections && dpkg --set-selections < /root/dpkg-selections.txt 

最后运行软件包pipe理器来更新系统的软件安装

 aptitude install 

现在剩下的就是将所有需要的configuration文件从MachineA上的/etc移到MachineB。 这最好是手动完成,因为在两台机器上有一定的文件需要不同,即使它们是彼此的镜像。 例如,像/etc/hostname/etc/network/interfaces/etc/fstab反映了他们各自的本地系统可能(或必须)在另一台机器上不同的情况。 要生成configuration文件的列表以考虑从MachineA复制到MachineB,您可以在“空运行”模式下使用rsync ,其中没有任何内容被实际复制,但列出了将被复制的文件,例如(来自MachineB):

 rsync -rplgoDvn MachineA:/etc/ /etc 

附录

警告和错误消息由debconf-set-selections生成并不常见。 我自己多次看过他们,我不知道他们为什么会出现,但我不记得他们发现他们表明了一个破碎configuration的实际情况。

如果您怀疑并希望消除恐惧,则可以通过以下步骤validation所有软件包configuration是否正常:创build生成了警告/错误的所有软件包的列表,然后手动运行dpkg-reconfigure package每个包在该列表中。 如果包装有任何真正的问题,应该通过重新configuration操作来暴露和/或修理。

我个人认为这只是一个备份机会,而不是试图将系统复制到另一个实时运行的系统。 只需使用rsync或rdiff-backup将整个新系统复制到旧系统即可。 rdiff备份的好处是可以轻松地拥有多个数据副本。

在原始服务器上,一个类似rsync备份的命令就是:

 rsync -a --exclude=/proc/ --exclude=/dev/ --exclude=/sys/ / root@backup:/path/to/backups/origin-root/ 

这将在目的地上制作完整的系统副本。 从那里你可以随时恢复你需要的任何configuration,而不用担心覆盖你需要保存在新服务器上的configuration(例如:fstab,hosts,hostname,networking,udev persistent net rules等)。

在旧机器上:

 dpkg --get-selections >/tmp/mypackagelist 

将文件复制到备份机器,并:

 cat mypackagelist | xargs apt-get -y install 

(这必须以超级用户身份完成)。

在这个老问题上可以find更多的东西。