2014-06-27 100 views
4

我已经设置了一个运行我的网络服务器来承载我的Symfony2应用程序的Vagrant框。 一切工作正常,除了文件夹同步。Vagrant 2路文件夹同步

我试图两两件事:

  1. config.vm.synced_folder LOCALFOLDER,HOSTFOLDER
  2. config.vm.synced_folder LOCALFOLDER,HOSTFOLDER,类型= “rsync的”

选项1 :第一个选项的作品,我其实不知道如何共享文件,但它的工作原理。 以两种方式复制文件,但应用程序超慢。 Symfony正在生成可能是问题的缓存文件,但我不知道如何解决这个问题并查看发生了什么。

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

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

谢谢!

回答

3

由于它似乎并没有流浪汉提供了一个“内置”的方式在这里做,这是我做过什么:

    对将包含应用程序生成的文件的文件夹
  • 配置流浪RSYNC文件夹(在Symfony2它是你的Bundle/Entity文件夹)。请注意,我没有同步根文件夹,因为某些文件夹不必rsynced(缓存/日志...),也是因为rsync进程解析所有文件夹/子文件夹时花费太多时间我知道只有实体文件夹将被生成。 由于Rsync必须从Vagrant框到主机完成,因此我使用vagrant-rsync-back插件,因此每次使用生成代码的命令时都会手动运行该插件。 https://github.com/smerrill/vagrant-rsync-back#getting-started

  • 在我的本地机器上创建一个观察器,该观察器将跟踪代码中的任何更改并将其rsync同步到流浪箱中。 https://gist.github.com/laurentlemaire/e423b4994c7452cddbd2

+0

Vagrant内置了对NFS和SMB的支持,作为双向同步的替代方案。看到我上面的答案。 – Emyl

-1

Vagrant将您的项目根目录作为/vargrant文件夹作为2路共享。

你可以运行你的命令在那里获得所需的文件同步。任何I/O都会变得很慢(就像你已经提到过的那样),但是你会得到你的文件。对于其他的东西,使用你的单向同步文件夹。

+0

我的应用程序不在该文件夹中,否则如您所说,它会变得很慢。而复制那些必须在那里移动的文件也需要太多的工作,并使其缓慢... – LEM01

+0

流浪者为它自己的目的安装该文件夹。即使你不要求它这样做。 – Im0rtality

+1

感谢您的回答,但这仍然使得这个过程变得过于缓慢或复杂(如果我构建另一个脚本,移动新创建的文件,排除缓存/日志...) – LEM01

5

如果默认同步文件夹策略(VirtualBox的共享文件夹,我想)是你的使用情况慢,你可以选择不同的一个,如果你需要,保持同步双向:

  • 如果你的主机操作系统是Linux的的Mac OS X,你可以去NFS
  • 如果您的主机操作系统是Windows您可以改为选择SMB

Rsync速度非常快,但是,正如您所指出的那样,它只是单向的。

+0

你是对的,但在我的情况下,速度是必需的,NFS和SMB不符合我的需要... – LEM01

+0

@Emyl,你有任何使用NFS和SMB的经验。在同步速度方面,SMB如何与NFS进行比较? –