任何人都可以build议一种方法,将跨主机(即Windows,Mac或Linux)跨平台的方式将数据从VM主机复制到VM [0]? 现在,我正在通过在VM中运行rsync来实现这一点,这显然不是很好。
在高层次上,我为使用非常不一致的开发环境的开发人员提供了一致的构build/testing环境。 当开发人员克隆代码库时,在后台启动虚拟机,在主机上编辑代码时运行滚动增量构build和testing。
我目前的实现有VM挂载一个同步文件夹包含源代码为只读。 我不希望虚拟机向主机文件系统写入任何内容,因为这可能会影响开发人员运行的手动构build或testing。 所以,我有VM将源目录的内容复制到guest虚拟机文件系统[1]。
我正在执行这个副本,通过运行一个永久的bash脚本rsync每三秒的内容。
while true do sleep 3 rsync -av --exclude '.git' --exclude-from $MOUNTDIR/.gitignore $MOUNTDIR/ $BUILDDIR/ done
显然,这并不理想。
我研究过使用各种文件系统监视器(基于inotify或kqueue),但它们都与特定types的文件系统(NTFS,ext3 / 4,HFS +)绑定。
有没有跨平台的方式来观察文件系统的变化? 无论是对文件系统特定推送通知服务的抽象,还是对平台不可知的轮询系统的抽象?
现有的图书馆或工具中是否存在这样的事情? 还是有一些我在这里失踪的常见模式。
运行Ubuntu的Vagrantconfiguration的Virtualbox虚拟机pipe理程序,但是我对所有这些依赖关系都很灵活。
[1]我试图通过symlinking来挂载文件夹,但是我们的构build系统gulp会parsing符号链接,导致痛苦