在我的Windows 7上我使用:
我有一个带有一些PHP软件(piwik)的ubuntu vagrant box,它在特定的CLI命令上执行一些涉及文件的处理。我已经测量了命令完成从guest(ubuntu)到主机(win7)的各种类型共享所需的时间:
BuildConfig.APPLICATION_ID
和config.vm.network "private_network", type: "dhcp"
)。config.vm.synced_folder "piwik", "/web-pub/piwik", :nfs => true, :mount_options => ['actimeo=2']
下未共享的所有相关文件后,我确认在不同的任务上按比例相似的数字(例如在香草drupal 7装置上/tmp
)。
您知道如何让共享文件夹的速度超过5秒吗?我想避免使用基于rsync的解决方案。
答案 0 :(得分:2)
如果您默认拥有数千个文件和vagrant mounts主目录,那么Vagrant文件共享速度很慢,请尝试禁用默认共享:
config.vm.synced_folder ".", "/vagrant", disabled: true
您可以尝试enabling FS Cache。我没有看到启用或不启用差异但是仍然启用了...在guest虚拟机中安装cachefilesd
并将fsc
添加到挂载选项中:
config.vm.synced_folder "src/", "/mnt/project", type: "nfs",
mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
你可能会遇到NFS的权限问题,你可以使用bindfs插件:
config.bindfs.bind_folder "/mnt/project", "/var/www/drupal",
owner: "www-data", group: "www-data"
这是我们用于drupal8开发的最终Vagrantfile
:
["vagrant-bindfs", "vagrant-vbguest"].each do |plugin|
unless Vagrant.has_plugin?(plugin)
raise plugin + ' plugin is not installed. Hint: vagrant plugin install ' + plugin
end
end
Vagrant.configure("2") do |config|
config.vm.box = "geerlingguy/ubuntu1604"
# Shared folders
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder "src/", "/mnt/drupal", type: "nfs",
mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
config.bindfs.bind_folder "/mnt/drupal", "/opt/drupal",
owner: "www-data", group: "www-data"
config.vm.network "private_network", ip: "192.168.33.20"
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
end
答案 1 :(得分:0)
您可以挂载根文件夹“不同步”,并挂载其他文件夹“带同步”,这是我对laravel和homestead的配置:
folders:
- map: "./"
to: "/home/vagrant/green-rush"
type: "nfs"
options:
disabled: true
- map: "./app"
to: "/home/vagrant/green-rush/app"
type: "nfs"
- map: "./resources"
to: "/home/vagrant/green-rush/resources"
type: "nfs"
- map: "./routes"
to: "/home/vagrant/green-rush/routes"
type: "nfs"
- map: "./tests"
to: "/home/vagrant/green-rush/tests"
type: "nfs"
- map: "./public"
to: "/home/vagrant/green-rush/public"
type: "nfs"
现在,根据您的情况,速度应该非常接近0.5秒。您可以挂载所有想要作为“同步文件夹” 的文件夹,只是不必挂载“。git文件夹”。。因为问题最多的文件夹是” .git” 文件夹。对于非挂载文件夹,“ node_modules” 文件夹也是不错的选择。唯一的问题是现在根文件中的文件现在不同步,但这是一个折衷方案,您可以使用以下命令手动将这些文件移至无用状态: :
scp "C:\projects\test\.env" "vagrant@vagrant.local:/home/vagrant/test/.env"
或者您可以创建一个脚本,该脚本将在更改任何文件时自动为您执行此操作。