windows - VBoxManage 仅在不存在时添加共享文件夹?

标签 windows vagrant virtualbox

我在 Virtualbox 中使用 Vagrant。我正在我的 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 共享文件夹命令)的唯一原因是因为 Windows 主机的 Vagrant 中存在一个错误,该错误将共享文件夹中的文件夹路径限制为 260长字符。上面的手动共享文件夹设置使用 UNC 路径绕过了这个问题。

最佳答案

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

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

关于windows - VBoxManage 仅在不存在时添加共享文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002164/

相关文章:

ruby - Veewee 安装错误

virtual-machine - Virtualbox Raw 模式因 Hyper-V Windows 10 不可用

asp.net - IIS 7.5 提供空白页(静态和动态内容)

c# - 如何向窗口标题栏添加一个额外的按钮,以便它按标准工作?

C# Windows 服务计时器未触发

php - 如何在 PhpStorm 中为在 Vagrant 中运行的 Laravel Web 应用程序正确设置 XDebug? (Mac 操作系统)

java - 无法访问应用程序数据中的 jarfile

php - Xdebug 在 PHPStorm IDE 中不工作

php - 是否可以在使用 puPHPet 提供的环境中升级 PHP?

postgresql - 无法使用 postgresql 连接到服务器是在本地运行的服务器和 PGSQL.5432