如何同步要在不同计算机上使用的虚拟机的两个实例?


8

我已经在桌面上使用VirtualBox了一段时间了。最近购买了笔记本电脑后,我希望能够随身携带Ubuntu虚拟机,并在我到达/离开家时将我在笔记本电脑上所做的更改传播到桌面,反之亦然。两台计算机上的主机操作系统均为Windows 7,均运行VirtualBox 4。

我的第一个想法是同步虚拟磁盘文件本身。我选择的工具将是rsync,更具体地说是Cygwin版本,使用该--inplace选项来尽可能减少写入。但这是不可行的:这将使我无法单独在VM上工作,因为rsync如果不了解容器内部的文件系统,就无法检测冲突并正确地合并它们。

下一个选择是rsync将正在运行的计算机彼此连接。在不搞乱包裹管理的情况下是否可行?除了新内核或驱动程序之类的更新之外,我是否还需要手动执行其他操作?还有其他更好的解决方案吗?


我认为您应该将这个问题一分为二。首先询问服务器镜像。然后,当您(希望)有几个答案时,请询问如何在VM上实现它们。
Nifle 2011年

另一种可能是在笔记本计算机上拥有一个VM实例,然后在家时从主系统远程访问它。
Journeyman Geek

您将只需要同步软件和文档,而不必同步整个VM,因为网络上不能有两台具有相同MAC地址和主机名的计算机。那会引起混乱。
paradroid 2011年

@Journeyman Geek:我没想到,它确实可以工作,但是考虑到笔记本计算机上的硬盘驱动器比台式机上的SSD慢,它要慢很多。
danielkza 2011年

1
您是否有理由不在外部驱动器上运行VM并将其在系统之间移动?
戴夫M

Answers:


2

采用rsync了双向操作是困难的; 我建议您unison选择其他方法。它可以双向工作,并在执行此操作之前告诉您它要做什么,还可以检测双方同时操作的文件。

在VM外部运行同步将遇到您描述的问题。结果在VM内运行时,将在很大程度上取决于什么你同步。

  • 同步您的主目录应该完全没有问题,并且应该同步您假定的大多数日常工作。
  • 仅当您对几乎所有内容进行完全同步时(也许有一些经过深思熟虑的例外情况),才可以同步包管理器数据。但是,在双向同步中,这几乎总是会导致冲突,因此,我只建议采用rsync样式的方法。
  • 同步/etc和家庭同步应该同步大多数配置数据,并且对软件包管理器的工作影响很小。但是,如果您在一个VM上安装了一些软件,则也必须在另一VM上手动安装它,并且可能只有这样做之后才进行同步,以防升级更改了某些配置文件。

1

考虑完全不尝试“同步”虚拟机。

考虑一下:您不会以这种方式“同步”台式机和笔记本电脑。您将它们视为独立的计算机,并使用Dropbox,Google Apps等服务或什至USB记忆棒来处理文件。同样,将两个Ubuntu VM视为单独的计算机,并使用Ubuntu One及更高版本等服务来使您的重要文件保持同步。

如果您担心保持已安装的软件同步,则可以使用

dpkg --list-selections

以获得您在一台计算机上专门安装的软件的列表,然后在另一台计算机上安装相同的软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.