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