我已经在台式机上使用 VirtualBox 有一段时间了。最近买了一台笔记本电脑,我想随身携带 Ubuntu 虚拟机,当我到家或离开家时,我在笔记本电脑上所做的更改会传播到台式机上,反之亦然。两台电脑上的主机操作系统都是 Windows 7,运行 VirtualBox 4。
我的第一个想法是同步虚拟磁盘文件本身。我选择的工具是rsync
,更具体地说是它的 Cygwin 版本,使用--inplace
尽可能减少写入的选项。但这是不可行的:它会阻止我在虚拟机上单独工作,因为rsync
如果不了解容器内的文件系统,就无法检测冲突并正确合并它们。
下一个选项是将rsync
正在运行的机器相互连接。这样做不会弄乱软件包管理吗?除了更新新内核或驱动程序之外,我还需要手动执行任何操作吗?还有其他更好的解决方案吗?
答案1
用于rsync
双向操作比较困难;我建议你看看unison
作为替代方案。它将双向工作,并在执行操作之前告诉您它将要做什么,同时检测两侧同时操作的文件。
在虚拟机外运行同步会出现您描述的问题。在虚拟机内运行的结果在很大程度上取决于什么你同步。
- 同步您的主目录应该完全没有问题,并且我认为应该可以同步您的大部分日常工作。
- 同步包管理器数据只有在你对几乎所有内容进行完全同步时才有意义,也许会有一些经过深思熟虑的例外情况。不过,在双向同步中,这几乎总是会导致冲突,因此我建议仅采用 rsync 样式的方法。
- 同步
/etc
以及你的家应该同步最多配置数据,对包管理器的工作影响不大。但如果您在一台虚拟机上安装某些软件,您也必须手动将其安装在另一台虚拟机上,并且可能只应同步后这样做是为了防止升级改变了某些配置文件。
答案2
考虑根本不要尝试“同步”虚拟机。
想想看:您不会以这种方式“同步”您的台式机和笔记本电脑。您将它们视为独立的机器,并使用 Dropbox、Google Apps 等服务,甚至 USB 记忆棒来处理您的文件。同样,将两个 Ubuntu VM 视为独立的计算机,并使用 Ubuntu One 等服务来保持重要文件同步。
如果你担心保持已安装的软件同步,你可以使用
dpkg --list-selections
获取您在一台机器上具体安装的软件列表,然后在另一台机器上安装相同的软件。