我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
当前回答
转到Vagrantfile所在的目录 然后,编辑你的Vagrantfile并添加以下内容:
config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=774','fmode=775']
"."表示您在主机上当前所在的目录 “/vagrant”是指客机(vagrant机)上的“/home/vagrant”。
复制你需要发送到客户机的文件到你的Vagrantfile文件夹 然后打开Git Bash, cd到你的Vagrantfile所在的目录,输入:
vagrant scp config.json XXXXXXX:/home/vagrant/
其中XXXXXXX是您的虚拟机名称。您可以通过运行命令获取虚拟机名称
vagrant global-status
其他回答
下面是我解决这个问题的方法:
步骤1 -找到私钥,ssh端口和IP:
root@vivi:/opt/boxes/jessie# vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /root/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
步骤2 -使用端口和私钥作为scp的参数传输文件:
scp -P 2222 -i /root/.vagrant.d/insecure_private_key \
someFileName.txt vagrant@127.0.0.1:~
我希望这对你们有帮助,
流浪者SCP插件工作,如果你知道你的流浪者盒子名称。 检查vagrant全局状态,它将提供您的盒子名称,然后您可以运行:
流浪的全球地位
id name provider state directory
------------------------------------------------------------------------
13e680d **default** virtualbox running /home/user
Vagrant SCP ~/foobar "name in my case default":/home/"user"/
如果你“cd ..”足够多的时间,你会发现vagrant文件夹,其中包含你所有的主机文件和文件夹
对我来说最好的办法是把文件/目录(要复制)写到流浪文件目录,现在任何文件都可以在路径/vagrant中找到。
就是这样,不需要scp或任何其他方法,
类似地,您可以通过粘贴/vagrant目录从虚拟机复制任何文件到主机。
我最终做的是将文件保存在我的vagrant目录中(自动挂载为/vagrant/),并使用shell供应程序复制它:
command = "cp #{File.join('/vagrant/', path_within_repo)} #{remote_file}"
config.vm.provision :shell, :inline => command