VBoxManage仅在共享文件夹不存在时才添加它?

时间:2015-08-14 04:13:01

标签: windows vagrant virtualbox

我正在使用Vagrant和Virtualbox。我正在我的Vagrant文​​件中配置一个共享文件夹。但是,如果已创建共享文件夹,则在尝试vagrant up VM时会出错。

config.vm.provider "virtualbox" do |v|
  v.customize ["sharedfolder", "add", :id, "--name", "vagrant", "--hostpath", (("//?/" + File.dirname(__FILE__)).gsub("/","\\"))]
  v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

config.vm.provision :shell, inline: "mkdir -p /vagrant", run: "always"
config.vm.provision :shell, inline: "mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant", run: "always"

因此,在这个Vagrantfile中,您可以看到我使用Virtualbox的VBoxManage命令创建共享文件夹。但是如果我创建VM,启动它,然后关闭它,然后再次vagrant up,然后它再次尝试创建共享文件夹,但它已经存在,因此Vagrant会抛出错误。

是否可以判断共享文件夹是否已存在?或者是否可以在第一次提供期间仅创建共享文件夹?

注意:我这样手动创建共享文件夹的唯一原因(与使用Vagrants共享文件夹命令相反)是因为Vagrant中存在一个错误,Windows主机将共享文件夹中的文件夹路径限制为260长字符。上述手动共享文件夹设置使用UNC路径绕过此问题。

1 个答案:

答案 0 :(得分:0)

您可以在添加共享文件夹之前添加以下行。基本上它会杀死共享文件夹并在每次运行VM时再次创建它

v.customize ["sharedfolder", "remove", :id, "--name", "vagrant"]