Mac系统下如何实现宿主机与Vagrant虚拟机的文件传输
Vagrant 宿主机与虚拟机文件同步失效解决方案
首先纠正认知误区
Vagrant 默认同步文件夹映射规则为:宿主机存放Vagrantfile的目录,默认挂载到虚拟机的 /vagrant 路径下,而非 /home/vagrant 路径,你当前的问题大概率是搞错了同步目录的映射路径。
验证&快速适配方案
- 执行
vagrant ssh进入虚拟机后,直接运行ls /vagrant命令,查看返回内容中是否包含Vagrantfile:- 能找到Vagrantfile说明同步功能本身正常,后续文件交换直接按以下规则操作即可:
- 宿主机需要共享的文件直接放到Vagrantfile同级目录
- 虚拟机侧读取/写入共享文件统一操作
/vagrant路径下的内容
- 如果你坚持要将
/home/vagrant作为同步目录,可修改Vagrantfile,添加如下配置:
保存后执行config.vm.synced_folder ".", "/home/vagrant"vagrant reload重启虚拟机即可生效。
- 能找到Vagrantfile说明同步功能本身正常,后续文件交换直接按以下规则操作即可:
若 /vagrant 路径为空,排查同步功能故障
按以下优先级排查:
- 检查Vagrantfile中是否存在禁用默认同步目录的配置,如有直接删除:
config.vm.synced_folder ".", "/vagrant", disabled: true - 确认你执行
vagrant up命令的工作目录,就是Vagrantfile所在的目录,路径错误会导致同步目录映射异常 - 如果你使用VirtualBox作为虚拟化Provider,90%的同步失败是因为VirtualBox Guest Additions版本不匹配:
执行vagrant plugin install vagrant-vbguest安装自动适配插件,再执行vagrant reload重启虚拟机,插件会自动安装匹配版本的Guest Additions - macOS宿主机可到「系统设置→隐私与安全性→文件和文件夹」中,确认VirtualBox、Terminal/iTerm2拥有Vagrantfile所在目录的访问权限;Windows宿主机确认Vagrantfile所在目录未开启只读限制,当前用户拥有读写权限。
功能验证
配置生效后可按以下方式验证:
- 宿主机Vagrantfile同级目录新建
test.txt,虚拟机执行ls /vagrant可看到该文件 - 虚拟机执行
touch /vagrant/vm_test.txt,宿主机Vagrantfile同级目录可看到该文件,说明同步功能正常。
内容的提问来源于stack exchange,提问作者punsoca
相关产品推荐
相关产品推荐

