2014-06-27 102 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進行比較? –