Vagrant 2路文件夹同步

时间:2014-06-27 17:53:17

标签: symfony vagrant

我已经设置了一个Vagrant框来运行我的网络服务器来托管我的Symfony2应用程序。 除文件夹同步外,一切正常。

我尝试了两件事:

  1. config.vm.synced_folder LOCALFOLDER,HOSTFOLDER
  2. config.vm.synced_folder LOCALFOLDER,HOSTFOLDER,type =“rsync”
  3. 选项1 :第一个选项有效,我实际上不知道如何共享文件,但它有效。 文件以两种方式复制,但应用程序速度超慢。 Symfony正在生成可能存在问题的缓存文件,但我真的不知道如何解决这个问题,看看发生了什么。

    选项2:同步只能以一种方式完成(从我的本地机器到流浪者盒子),这涵盖了大部分情况并且速度很快。 问题是当我在vagrant box上使用symfony命令行生成一些文件时,它们不会被复制到我的本地机器上。

    我的问题是: 进行2种方式同步的最佳方法是什么?使用选项1,我如何(因为它可能是问题)从同步中排除一些文件。 使用选项2,如何确保将远程更改复制到本地计算机?

    谢谢!

3 个答案:

答案 0 :(得分:5)

如果默认同步文件夹策略(我认为VirtualBox共享文件夹)对于您的用例来说很慢,您可以选择另一个,如果需要,可以保持双向同步:

  • 如果您的主机操作系统是 Linux Mac OS X ,则可以使用NFS
  • 如果您的主机操作系统是 Windows ,您可以选择SMB

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都会很慢(就像你已经提到的那样),但是你会获得你的文件。对于其他内容,请使用单向同步文件夹。