我已经设置了一个Vagrant框来运行我的网络服务器来托管我的Symfony2应用程序。 除文件夹同步外,一切正常。
我尝试了两件事:
选项1 :第一个选项有效,我实际上不知道如何共享文件,但它有效。 文件以两种方式复制,但应用程序速度超慢。 Symfony正在生成可能存在问题的缓存文件,但我真的不知道如何解决这个问题,看看发生了什么。
选项2:同步只能以一种方式完成(从我的本地机器到流浪者盒子),这涵盖了大部分情况并且速度很快。 问题是当我在vagrant box上使用symfony命令行生成一些文件时,它们不会被复制到我的本地机器上。
我的问题是: 进行2种方式同步的最佳方法是什么?使用选项1,我如何(因为它可能是问题)从同步中排除一些文件。 使用选项2,如何确保将远程更改复制到本地计算机?
谢谢!
答案 0 :(得分:5)
如果默认同步文件夹策略(我认为VirtualBox共享文件夹)对于您的用例来说很慢,您可以选择另一个,如果需要,可以保持双向同步:
Rsync非常快,但正如您所指出的那样,只是单向的。
答案 1 :(得分:3)
因为看起来Vagrant并没有提供内置的"这样做的方法就是我做的:
在包含应用程序生成文件的文件夹上配置Vagrant RSYNC文件夹(在Symfony2中,它是您的Bundle / Entity文件夹)。请注意,我没有同步根文件夹,因为某些文件夹不必是rsynced(缓存/日志...),也因为它花费了太多时间让rsync进程解析所有文件夹/子文件夹,我知道只会生成Entity文件夹。 由于Rsync必须从Vagrant框到主机完成,我使用vagrant-rsync-back插件,因此每次使用生成代码的命令时都会手动运行。 https://github.com/smerrill/vagrant-rsync-back#getting-started
在我的本地计算机上创建一个观察程序,它将跟踪代码中的任何更改并将其同步到流浪者框。 https://gist.github.com/laurentlemaire/e423b4994c7452cddbd2
答案 2 :(得分:-1)
Vagrant将您的项目根目录挂载到框内的/vargrant
文件夹作为双向共享。
您可以在那里运行命令,确保同步所需的文件。任何I / O都会很慢(就像你已经提到的那样),但是你会获得你的文件。对于其他内容,请使用单向同步文件夹。