忽略同步文件夹文件/目录,使用NFS作为Vagrant的同步系统

时间:2015-06-16 19:05:59

标签: vagrant virtualbox rsync nfs smb

有没有办法让NFS忽略同步文件夹中的指定文件和/或目录?我已使用rsyncrsync__exclude)完成此操作,但未找到任何NFS参考。我也在寻找SMB的解决方案。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

在我的情况下,我不得不保持缓存和日志文件不同步,我发现的解决方案是创建一个符号链接而不是缓存和日志文件夹(例如app/cacheapp/log)指向同步文件夹之外的目录(例如/home/vagrant/project/cache)。然后,app/cache内的文件不同步。希望它有所帮助。

答案 1 :(得分:3)

我的代表不足以评论上述答案,我遇到了完全相同的问题。我不得不做一些工作并想出这个细节:

符号链接必须位于虚拟机中。例如:

vagrant ssh
cd your/webapp
mkdir outside/your/webapp
ln -s outside/your/webapp cache

现在,符号链接将显示在项目文件夹中,但实际上您不会同步任何文件。

答案 2 :(得分:0)

我设法将NFS和RSync结合在一起。在RSync中,我们可以排除NFS文件夹

这是我的Symfony 3.4项目的vagrantfile中的内容。除 / var 文件夹

外,每个文件夹均为NFS。
biDirectionalNFSFolders = []

Dir.foreach('.') do |folder|

    # Skip if not a directory?
    # Skip if /var folder
    # Skip if . or .. folder
    next if !File.directory?(folder) or folder == 'var' or folder == '.' or folder == '..'

    # This folder can be NFS synced
    fullPath = '/htdocs/' + folder
    biDirectionalNFSFolders.push(fullPath)
    config.vm.synced_folder "." + fullPath, "/vagrant" + fullPath, type: "nfs", mount_options: ['rw', 'vers=3', 'tcp', 'fsc', 'nolock', 'actimeo=2']

end

# The remaining folders (/var only in this case) can then be Rsynced, the NFS folders will be excluded
config.vm.synced_folder ".", "/vagrant", type: "rsync",
    rsync__exclude: biDirectionalNFSFolders