我怎样才能创build一个系统镜像?

我在一台机器上build立了一个数据库和networking服务器,我想把系统镜像到另一台机器上。 原来的数据库运行的是Ubuntu 9.1,新的系统安装了Ubuntu 11.04(但可以擦除,这是一个全新的盒子)。 我在想象,我将两个系统都连接到我的路由器上,让他们以某种方式知道对方,然后数据就会从一个移动到另一个。 我能做些什么来开始这个过程?

编辑:我想我使用错误的单词“镜子”。 我想要做的是将工作系统复制到新系统上。 然后,我想周期性地复制数据以确保两者保持同步。 定期复制是次要的; 最初,我只是想将数据从一个移到另一个(包括mysql数据库,网站,所有补丁等)。 之后我会担心后面的副本。

编辑2更清晰,我想我想做的最好的描述是做一台机器的时间机备份,然后恢复到另一台。 理想情况下,我会跳过去外部硬盘的中间步骤。

只是做一个直观的镜子,使用dd。 它是一个比特stream复制器。 相当标准的东西。

这是一些更多的信息,让你开始:

http://thetechshop.org/showthread.php?177-Using-dd-and-netcat-to-clone-mirror-a-drive
http://wiki.linuxquestions.org/wiki/Some_dd_examples
http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/
http://www.codecoffee.com/tipsforlinux/articles/036.html

保持同步是一个不同的故事。 如果满足您的需求,您可以每隔一段时间重做一次。 或者你可以做一些rsync组合来保持webroot同步,然后使用许多可用的方法之一进行mysql同步。 这是一个完全不同的可以独立研究的蠕虫。 我确信有一些关于服务器故障已经存在的旧问题。

UPDATE

根据你的意见和更新,你应该专注于让一个盒子完全工作。 把mysql dump和web root文件移到Ubuntu 11中,然后configuration它,使其function相同,使其处于稳定工作状态。 为了让这些文件结束,使用SCP,它可以让你轻松地通过SSH传输文件。 或者你可以尝试得到完全工作形状的Ubuntu 9的盒子。

那么当你select的服务器在一个好的地方时,你可以使用DD和netcat,或者使用ssh或者任意数量的方法来做一个一点一滴的镜像拷贝到另一台机器上。

那么…为了将来的同步,你可以使用rsync的webroot和configuration文件。 并select你自己的方法为mysql,你可以脚本转储,scp传输和导入,或者你可以去更复杂的东西,这取决于你的需求是什么。

你可以做到这一点,虽然我没有出售,你将不得不这样做对你是完全有用的。 它主要取决于你的networking中的DNS的掌握,现在你想使用的一切。

实际上我一直在为自己设定类似的东西。

要知道的关键是,一旦你有足够的configuration两个框(所有必要的Apache模块等)。然后,你有一些事情,你需要保持这一切工作:

  1. Web根目录 – 你已经有了一些文件,Apache的configuration文件会调用你的DocumentRoot–这就是你的网站上托pipe的文件的存储位置。 你需要同步这个目录。 默认情况下,这应该是/ var / www /(但是如果你进入虚拟主机,那么你必须给其他位置,我把我的/ www / [域名] /。

  2. 数据库 – 你说你有一个数据库涉及..显然你需要相应的复制。 假设你在MySQL上,你可以使用mysqldump来获取数据库。 谷歌周围学习如何备份和恢复与mysqldump。

  3. configuration文件 – 如果你的情况非常简单,那么你可能只需要做一次。 您的网站是通过configuration文件(可能取决于几个)在您的Web服务器软件(我认为是Apache)中configuration的。 如果您在Apache 2.x上使用虚拟主机,那么您可能会在该服务器上托pipe的每个站点都有一个configuration文件。 您可能需要/想要同步。 请记住,在机器上replace它之后,至less必须“重新加载”你的apacheconfiguration。

所以,我看到它的过程将涉及使用像rsync的东西来复制文件。 你可以让ssh调用执行某些事情,终止你也需要的事情(可能在接收端调用一些脚本来完成你可能需要的任何事情)。

现在,正如我已经解释过的那样,使用副本运行的机器将完全是一面镜子,如果任何人改变了它上面的任何数据,就会在下一次同步时崩溃。 如果你想让多台服务器托pipe同一个站点,以达到负载平衡的目的,那么我想你会希望拥有一台单独的数据库服务器,以便你的networking服务器能够与之交谈,并且你想使用类似NFS的东西将web根目录的一个副本提供给服务器。 然后,您可以考虑configuration一个反向代理,为您透明地为服务器进行负载平衡。 “磅”是一个相当简单的反向代理,你可以使用。

对于最初的镜子:

  1. Apahce和MySql的configuration文件 – 很可能您需要手动执行此操作,因为它们之间的结构可能会发生一些变化
  2. 网站 – 只需复制目录/文件结构
  3. 数据库 – 取决于引擎,但如果它的MySql – mysqldump再导入新的

对于定期更新:

  1. configuration文件 – 也可以手动完成。 但通常情况下,经常更改configuration文件并不常见,或者即使如此,更改也很小
  2. 网站 – 我会付出一些努力,把所有的文件放在一些源代码pipe理系统 – 让svn说,并更新两个服务器,而不是直接在server1上,然后复制到server2
  3. 数据库 – 再次mysqldump,然后在server2上恢复,或设置一些主/从configuration,所以数据总是同步。