我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
我有一个用例,我偶尔想从我的主机复制一个文件到Vagrant客户机。
我不想这样做通过传统的供应(木偶/厨师),因为这往往是一次性的-我只是想快速添加到我的Vagrantfile。
我不想共享整个目录,可能是因为我想覆盖现有文件,而不破坏客户机上的整个目录。
当我想要做的只是复制一个文件时,编写一个shell配置脚本并处理潜在的转义似乎有点过分。
那么,将单个文件从主机复制到客户机的最简单方法是什么?
当前回答
最好的方式复制文件从本地到流浪,不需要写任何代码或任何东西或任何配置更改。 1-首先是流浪汉(流浪汉起来) 2-打开cygwin 3- cygwin:去你的文件夹是vagrantfile或从哪里启动vagrant 4- SSH流浪汉 5-现在它将像一个正常的系统。
其他回答
您可以在~/.ssh/config中添加条目:
Host vagrant
User vagrant
HostName localhost
Port 2222
IdentityFile /home/user_name/.vagrant.d/insecure_private_key
和simplescp文件vagrant:/path/。可以使用vagrant ssh-config命令查找身份文件的路径。
缺省情况下,第一个流浪实例使用ssh端口2222,其ip地址为127.0.0.1(如果您创建了多个虚拟主机,可能需要调整端口)
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
因此,您可以运行下面的命令来复制您的本地文件到vagrant实例,而不仅仅是到/vagrant。密码和用户名是一样的。
scp -P 2222 your_file vagrant@127.0.0.1:.
您还可以将文件复制回您的本地主机。
scp -P 2222 vagrant@127.0.0.1:/PATH/filename .
转到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
除了使用shell提供程序复制文件外,还可以使用Vagrant文件提供程序。
提供者名称:“file” 文件提供程序允许您将文件从主机上传到客户计算机。
Vagrant.configure("2") do |config|
# ... other configuration
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
vagrant upload localfile
这将把localfile放在流浪者用户的主目录
https://www.vagrantup.com/docs/cli/upload.html