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

忽略与NFS同步的文件夹文件/目录作为Vagrant的同步系统,vagrant,virtualbox,rsync,nfs,smb,Vagrant,Virtualbox,Rsync,Nfs,Smb,是否有任何方法可以忽略同步文件夹中的指定文件和/或目录?我已经用rsync()完成了这项工作,但是没有找到NFS的任何参考资料。我也在寻找解决问题的方法。有什么想法吗?在我的例子中,我必须保持缓存和日志文件不同步,我发现的解决方案是创建一个符号链接,而不是缓存和日志文件夹(例如app/cache和app/log),它们指向同步文件夹外的目录(例如/home/vagrant/project/cache)。然后,app/cache中的文件不同步。希望能有所帮助。我的代表对上述答案的评价不够高,我也有

是否有任何方法可以忽略同步文件夹中的指定文件和/或目录?我已经用
rsync
()完成了这项工作,但是没有找到NFS的任何参考资料。我也在寻找解决问题的方法。有什么想法吗?

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

我的代表对上述答案的评价不够高,我也有同样的问题。我必须做一些工作,弄清楚这个细节:

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

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

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

我成功地将NFS和RSync结合起来。在RSync中,我们可以排除NFS文件夹

这是我在一个Symfony 3.4项目的Vagrant文件中的内容。除/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

当然,
/home/vagrant/project/cache
在同步文件夹之外,但在虚拟机内部。在这种情况下,
外部/文件夹
需要额外的文件权限,这可能是一个很好的说法。