我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
当前回答
vagrant upload localfile
这将把localfile放在流浪者用户的主目录
https://www.vagrantup.com/docs/cli/upload.html
其他回答
除了使用shell提供程序复制文件外,还可以使用Vagrant文件提供程序。
提供者名称:“file” 文件提供程序允许您将文件从主机上传到客户计算机。
Vagrant.configure("2") do |config|
# ... other configuration
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
如果您的目录中不能包含这些文件,则可以在主机的脚本文件中运行此代码。
#!/bin/sh
OPTIONS=`vagrant ssh-config | awk -v ORS=' ' '{print "-o " $1 "=" $2}'`
scp ${OPTIONS} /File/To/Copy vagrant@YourServer:/Where/To/Put/File
在此设置中,您只需要将/File/ to /Copy更改为您想要复制的文件或文件,然后/Where/ to /Put/File是您希望将文件复制到的虚拟机上的位置。
如果您创建了这个文件并将其命名为copyToServer.sh,那么您可以运行sh命令来推送这些文件。
sh ./copyToServer.sh
最后需要注意的是,您不能将此代码作为配置程序运行,因为它运行在Guest服务器上,而此代码则从主机运行。
下面是我解决这个问题的方法:
步骤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:~
我希望这对你们有帮助,
如果你“cd ..”足够多的时间,你会发现vagrant文件夹,其中包含你所有的主机文件和文件夹
另一种不安装任何东西的方法(vagrant-scp等)请注意,需要按原样使用名称default,因为vagrant ssh-config会发出该名称。
vg_scp() {
tmpfile=$(mktemp /tmp/vagrant-ssh-config.XXXX)
vagrant ssh-config > $tmpfile
scp -F $tmpfile "$@"
rm $tmpfile
}
# Copy from local to remote
vg_scp somefile default:/tmp
# Copy from remote to local
vg_scp default:/tmp/somefile ./
# Copy a directory from remote to local
vg_scp -r default:/tmp ./tmp
如果scp -F =(vagrant ssh-config)…会在壳层上起作用。但是由于Bash不支持这一点,所以我们必须采用这种解决方法。