【问题标题】:Vagrant synced_folder overwriting guest folderVagrant synced_folder 覆盖访客文件夹
【发布时间】:2014-06-13 23:46:09
【问题描述】:

我遇到了一个问题,在启动 vagrant box 后,synced_folder 正在擦除客户机上目标文件夹的所有内容(我猜它正在覆盖它)。

我的 Vagrantfile 中有以下行

config.vm.synced_folder "folder/", "/home/vagrant/src/folder/"

我验证/home/vagrant/src/folder有内容,然后将synced_folder命令添加到Vagrant文​​件导致启动后为空。

我不知道是因为我缺少一些配置选项、权限问题还是什么。

我在 Mac OS X 10.9.2 上使用 VirtualBox 4.3.12

对此的任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: vagrant virtualbox vagrantfile


    【解决方案1】:

    如果文件夹/home/vagrant/src/folder/ 存在于客户操作系统中(听起来很像),那里的任何内容都不会被覆盖,但它们会被隐藏,因为 Vagrant 将使用与挂载点相同的路径。如果禁用共享,然后执行vagrant reloadvagrant ssh,您可能会看到旧内容重新出现。

    共享主要有助于使主机操作系统上的文件在来宾操作系统中可见,反之则不然。

    一种解决方法可能是使用普通文件夹共享(到/vagrant),然后在来宾操作系统中创建一个符号链接,指向您希望在主机操作系统上显示的内容。您可以将其添加到您的 .profile 以在您每次 ssh 进入来宾时运行它。

    【讨论】:

      【解决方案2】:

      正如 BrianC 所提到的,它不是覆盖,而是预期的行为。

      Vagrant 将项目文件夹中的 folder 挂载到来宾中的 /home/vagrant/src/folder/。因此,除非您手动卸载 vagrant 共享(默认为 vboxsf),否则原始文件夹中的内容将被隐藏。

      您可以更改共享的挂载点(在来宾内)以解决该问题。

      顺便说一句:默认vboxsf 有其局限性,有新类型的同步文件,例如rsync,NFS,smb。我个人会推荐使用 rsync 类型。

      【讨论】:

      • 如果您不介意我问,您介意解释一下如何更改客户机中的挂载点以使其正常工作吗?
      • @CraigKochis 运行findmntmount,您可能会看到一些vboxsf 类型的文件系统安装为/home/vagrant/src/folder,您可以尝试运行umount -l /home/vagrant/src/folder 将其卸载为根。
      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2010-11-21
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多