我有Apache,Oracle和PHP的红帽Linux服务器。 我将此服务器用作生产服务器,我想创build一个与生产服务器具有相同configuration/产品版本的新testing服务器。 有没有办法从生产中复制所有的安装/configuration,在另一台服务器上安装/复制。
假设你已经安装了来自官方仓库的软件包,那么这个过程将是:
/etc /var/www下的网页/脚本和/home和/root东西也要备份 /etc的内容replace为第一台机器的备份, 但是要注意如果这些机器要与/etc/hostname和/etc/samba/smb.conf在相同的networking上,则需要改变这些文件 。 要获得Debian或类似的步骤1中的软件包列表,请使用sudo dpkg --get-selections '*' > selection.dpkg ,并在步骤5中将软件包安装到新机器上,请使用sudo dpkg --set-selections < myselection.dpkg --set-selections < myselection.debconf后跟sudo apt-get -u dselect-upgrade 。 如果你遇到任何错误,确保你已经用sudo aptitude install debconf-utils安装了debconf-utils软件包(事实上,在开始之前,这是值得运行的,因为如果软件包已经存在)。
我不太熟悉yum (RadHat使用的,而不是dpkg和apt *),但我认为它有类似的function – 检查文档或挂在周围,看看如果一个yum专家发布这个问题的答案或对这个答案的评论)与细节。 yum list installed可能是从哪里开始的。
这也是一个好主意,虽然不是必须的(configuration应该存在于/etc的备份中),以保持包configurationselect的logging并将其应用到新机器上。 这样,如果你做了一些强制重新configuration包的事情,你不会冒任何意外的风险。 在Debian-a-likes上添加sudo debconf-get-selections > selection.debconf到步骤1,在步骤5之前运行sudo debconf-set-selections < myselection.debconf 。
编辑,重新:甲骨文:
当你把Oracle列为已安装的东西之一时,你并没有从软件包中安装所有东西(除非Oracle是通过定制的repo来安装的,在这种情况下,在第5步之前将该repo添加到新服务器的configuration中, 。 您需要咨询Oracle文档(或Oracle专家),以了解如何备份所有必需的文件和configuration,并将其恢复到目标机器。
或者,您也可以只使用计算机的硬盘驱动器(使用简单的dd或更专用的磁盘/文件系统克隆工具)来映像,然后将映像恢复到目标计算机,然后使用计算机专用的更新,如更改主机名。 这可能需要更长的时间,并需要更多的存储空间(虽然可能会更容易),因为您可能正在复制大规模驱动器的图像。
您可以像这样复制一组已安装的软件包:
在生产服务器上,获取rpm -qa的输出:
rpm -qa > list-of-packages
在您的开发服务器上,将这个包列表传递给yum :
yum install $(cat list-of-packages)
只要你的开发服务器还没有安装更新版本的软件包(因为yum不喜欢降级软件包),这将会很好的工作。
正如Spillet先生所说,如果你的软件包已经安装在你的正常的软件仓库列表之外,那么你必须手工处理这些软件包。
通常,复制configuration文件是一个手动过程,除非您已经采取措施在生产服务器上logging哪些文件已从其库存configuration修改过。 我们经常使用版本控制系统(如git )来达到这个目的。 假设所有已安装的软件包运行良好,您可能可以这样做来获取configuration文件列表:
rpm -qac
对于--query , -q用于--all , -c用于--configfiles 。
假设两个系统之间有ssh访问,那么你可以这样做,把它们全部复制到你的开发服务器上:
cd / ssh production 'rpm -qac | cpio -o' | cpio -iuvd
…但是,我不确定我会推荐这个过程,因为它可能会覆盖具有特定系统信息的目标系统上的东西(也就是,硬件特定的)。 如果你采用某种版本控制,这个问题就不会那么严重了(因为你可以根据需要识别更改并恢复它们)。