首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法复制服务器的快照?

是否有方法复制服务器的快照?
EN

Server Fault用户
提问于 2011-06-14 17:02:47
回答 2查看 79关注 0票数 2

我有带有Apache、Oracle和PHP的Redhat Linux Server。我将此服务器用作生产服务器,并希望创建一个新的测试服务器,其配置/产品版本与生产服务器相同。是否有任何方法从生产中复制所有安装/配置,并在另一个服务器上安装/复制。

EN

回答 2

Server Fault用户

发布于 2011-06-14 17:45:30

假设您已经从官方存储库安装了包中的所有内容,这个过程将是:

  1. 获取源服务器上的包列表。
  2. 在源服务器上备份/etc
  3. 如果您有任何其他配置要复制,比如/var/www下的网页/脚本,以及/home/root中的内容,也可以备份这些配置。
  4. 在新机器上执行新安装
  5. 使用步骤1中找到的包列表使包在新机器上保持一致。
  6. /etc的内容复制到第一台计算机的备份中,但是要小心那些需要更改的文件,如果机器将位于/etc/hostname/etc/samba/smb.conf等相同的网络上。
  7. 如果步骤3备份了更多文件/设置,则还原其他文件/设置
  8. 对每台机器重复第4至第7步,如果需要更多的话

要在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*),但我认为它有类似的特性--查看文档或者在yum专家发布关于这个问题的答案(或对这个答案的评论)中列出详细信息。yum list installed可能是从哪里开始的。

这也是一个好主意,尽管不是必需的(无论如何,配置应该出现在/etc的备份中),保存包配置选择的记录,并将其应用于新机器。这样,如果您执行强制重新配置包的操作,就不会意外地将某些东西恢复为默认的。在Debian上,将sudo debconf-get-selections > selection.debconf添加到步骤1,并在步骤5之前运行sudo debconf-set-selections < myselection.debconf

编辑,re: Oracle:

当您将Oracle列为已安装的内容之一时,您不会从包中安装所有内容(除非Oracle是通过自定义回购安装的,在这种情况下,在步骤5之前将该回购添加到新服务器的配置中,它可能会工作)。您需要查阅Oracle文档(或Oracle专家),了解如何备份所有所需的文件和配置,并将其还原到目标计算机。

或者,您只需将机器的硬盘驱动器(S)图像(使用像dd这样简单的东西,或者更专门的磁盘/文件系统克隆工具)恢复到目标机器上,然后进行特定于机器的更新,比如更改主机名。这可能需要更长的时间,并需要更多的存储空间(尽管可能更容易),因为您可能正在复制大规模驱动器的映像。

票数 1
EN

Server Fault用户

发布于 2011-06-15 12:53:36

您可以复制所安装的软件包集,如下所示:

  • 在生产服务器上,获取rpm -qa:rpm -qa >列表包的输出。
  • 在您的开发服务器上,将软件包列表传递给yum:yum $(cat列表包)

只要您的开发服务器还没有安装更新版本的包(因为yum不喜欢降级包),它就能正常工作。

正如Spillet先生所说,如果您的包已经安装在正常的存储库列表之外,您将不得不手工处理这些包。

通常,复制配置文件是一个手动过程,除非您已经采取步骤在生产服务器上记录已从库存配置中修改的文件。为此,我们经常使用版本控制系统(如git)。假设所有已安装的包行为良好,您可能可以这样做以获得配置文件的列表:

代码语言:javascript
复制
rpm -qac

这是-q表示--query-a表示--all-c表示--configfiles

假设在这两个系统之间进行ssh访问,那么您可以这样做,将它们全部复制到您的开发服务器上:

代码语言:javascript
复制
cd /
ssh production 'rpm -qac | cpio -o' | cpio -iuvd

...however,我不确定我是否会在过程中推荐这一点,因为它很容易覆盖目标系统上有特定系统信息的东西(也就是说,在某种程度上是特定于硬件的)。如果您采用某种版本控制,那么问题就会减少(因为您可以识别更改并根据需要进行还原)。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/280550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档