如何将文件从 Vagrant 机器复制到本地主机
How to copy file from a Vagrant machine to localhost
我想将本地文件从 Vagrant 机器复制到我的 localhost
,但我收到一条错误消息:
ssh: connect to host 127.0.0.1
port 22
: Connection refused.
[user@localhost ceil]$ scp -p 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
cp: cannot stat ‘2222’: No such file or directory
ssh: connect to host 127.0.0.1 port 22: Connection refused
我也试过使用 using localhost
但仍然出现同样的错误。
您应该阅读 scp
的手册页。正确的语法是:
scp -P 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
大写的P代表"port"。小写用于保留修改时间。
对于通过 Google 进入的任何人来说,这是一个方便的工具:Vagrant SCP
使用
获取身份文件和端口
vagrant ssh-config
scp -i IdentityFile_file -P Port vagrant@127.0.0.1:/file_dir dist_dir
例如
scp -i /Users/xxxxx/tmp/vagrant/centos_6.5/.vagrant/machines/default/virtualbox/private_key -P 2200 vagrant@127.0.0.1:/tmp/xxx .
另一种选择是 cat
文件到本地:
vagrant ssh -c "sudo cat /home/vagrant/devstack/local.conf" > local.conf
这也适用于需要 root 权限的文件(vagrant SCP 插件似乎不支持)。
如@SevenJ 所述,ssh-config 可以提供您需要的所有信息。但是将它保存到一个文件并使用该文件要容易得多,而不是构造一个复杂的 scp 命令。例如:
vagrant ssh-config > config.txt
scp -F config.txt default:/path/to/file .
这里我假设你的 vagrant 文件没有覆盖来自 "default" 的机器名。如果是,请将 "default:" 替换为“:”。
Dan 链接到的另一个选项:
vagrant plugin install vagrant-scp
vagrant scp [vm_name]:<remote_path> <local_path
如果你需要做相反的事情
vagrant scp <local_path> [vm_name]:<remote_path>
您可以使用vagrant status
获取虚拟机的名称
Current machine states:
default running (virtualbox)
在我的例子中,default 是 VM 的名称。
可能不需要 scp 或 cat 等其他工具。 Frederick Henri 报道了它 here。
基本上,cp [file] /var/www/[your vm]/.vagrant
会将文件复制到项目根目录下的 .vagrant 文件夹,您可以在其中查看和移动桌面上的文件 OS。
我想将本地文件从 Vagrant 机器复制到我的 localhost
,但我收到一条错误消息:
ssh: connect to host
127.0.0.1
port22
: Connection refused.
[user@localhost ceil]$ scp -p 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
cp: cannot stat ‘2222’: No such file or directory
ssh: connect to host 127.0.0.1 port 22: Connection refused
我也试过使用 using localhost
但仍然出现同样的错误。
您应该阅读 scp
的手册页。正确的语法是:
scp -P 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
大写的P代表"port"。小写用于保留修改时间。
对于通过 Google 进入的任何人来说,这是一个方便的工具:Vagrant SCP
使用
获取身份文件和端口vagrant ssh-config
scp -i IdentityFile_file -P Port vagrant@127.0.0.1:/file_dir dist_dir
例如
scp -i /Users/xxxxx/tmp/vagrant/centos_6.5/.vagrant/machines/default/virtualbox/private_key -P 2200 vagrant@127.0.0.1:/tmp/xxx .
另一种选择是 cat
文件到本地:
vagrant ssh -c "sudo cat /home/vagrant/devstack/local.conf" > local.conf
这也适用于需要 root 权限的文件(vagrant SCP 插件似乎不支持)。
如@SevenJ 所述,ssh-config 可以提供您需要的所有信息。但是将它保存到一个文件并使用该文件要容易得多,而不是构造一个复杂的 scp 命令。例如:
vagrant ssh-config > config.txt
scp -F config.txt default:/path/to/file .
这里我假设你的 vagrant 文件没有覆盖来自 "default" 的机器名。如果是,请将 "default:" 替换为“:”。
Dan 链接到的另一个选项:
vagrant plugin install vagrant-scp
vagrant scp [vm_name]:<remote_path> <local_path
如果你需要做相反的事情
vagrant scp <local_path> [vm_name]:<remote_path>
您可以使用vagrant status
获取虚拟机的名称
Current machine states:
default running (virtualbox)
在我的例子中,default 是 VM 的名称。
可能不需要 scp 或 cat 等其他工具。 Frederick Henri 报道了它 here。
基本上,cp [file] /var/www/[your vm]/.vagrant
会将文件复制到项目根目录下的 .vagrant 文件夹,您可以在其中查看和移动桌面上的文件 OS。