在运行CoreOS VM的vagrant的Windows上使用rsync

时间:2014-09-05 14:07:53

标签: windows cygwin vagrant rsync coreos

我正在使用Windows 8.1 Pro pc运行vagrant和cygwin的rsync。

我正在配置:

config.vm.synced_folder "../sharedFolder", "/vagrant_data", type: "rsync"

当我执行vagrant up时,我收到以下错误:

C:\dev\vagrantBoxes\coreOS>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'yungsang/coreos' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: core
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Rsyncing folder: /c/dev/vagrantBoxes/sharedFolder/ => /vagrant_data
There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.

Host path: /c/dev/vagrantBoxes/sharedFolder/
Guest path: /vagrant_data
Command: rsync --verbose --archive --delete -z --copy-links --chmod=ugo=rwX --no-perms --no-owner --no-group --rsync-path sudo rsync -e ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/d
ev/null -i 'C:/Users/aaron.axisa/.vagrant.d/insecure_private_key' --exclude .vagrant/ /c/dev/vagrantBoxes/sharedFolder/ core@127.0.0.1:/vagrant_data
Error: Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
rsync: change_dir "/c/dev/vagrantBoxes/sharedFolder" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/main.c(1052) [sender=3.0.9]

我认为它是如何将目录路径更改为/ c / dev而不是C:\ dev

的问题

4 个答案:

答案 0 :(得分:8)

像我在github-issue中评论的那样,你的Vagrantfile中的以下行肯定会解决你的问题

ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin"

因为它在您的Vagrantfile中是本地的,所以源文件可以保持不变

答案 1 :(得分:3)

解决方法:在cygwin终端上只有 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Dropdown Link 1</a></li> <li><a href="#">Dropdown Link 2</a></li> <li><a href="#">Dropdown Link 3</a></li> <li class="divider"></li> <li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown Link 4</a> <ul class="dropdown-menu"> <li><a href="#">Dropdown Submenu Link 4.1</a></li> <li><a href="#">Dropdown Submenu Link 4.2</a></li> <li><a href="#">Dropdown Submenu Link 4.3</a></li> <li><a href="#">Dropdown Submenu Link 4.4</a></li> </ul> </li> </ul> </li>

答案 2 :(得分:2)

有一种愚蠢的方法可以解决这个问题(无论如何都适用于我),你需要改变

hostpath = Vagrant::Util::Platform.cygwin_path(hostpath)

hostpath = "/cygdrive" + Vagrant::Util::Platform.cygwin_path(hostpath)

C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-[VERSION]\plugins\synced_folders\rsync\helper.rb

的第43行

与1.5.x不同,您可以在此处阅读此主题:https://github.com/mitchellh/vagrant/issues/3230

然而,我会首先承认编辑核心远非理想。

答案 3 :(得分:1)

根据我的测试,如果您使用的是cygwin,请使用@ osroot25的解决方案。

如果您正在使用cwRsync并且拥有cygwin,则除了将源代码编辑为@Andrew Myers详细信息外,没有使用Vagrant 的解决方法。使用Vagrant v1.6.5进行测试。

对我有用的解决方法是完全绕过Vagrant并直接使用cwRsync。这对我有用,因为我正在同步一个几乎没有变化的文件夹。我可能会在一天内改变它几次(所以我必须记住每次下面的第2步),但是我会花几周(或几个月)而不做任何改动。请记住,要使用cwRsync,您必须编辑并使用cwrsync.cmd脚本。尝试直接访问rsync.exe命令或将其添加到路径失败。第1步:我将以下行添加到cwrsync.cmd的末尾(在已安装的文件夹中):

rsync -re "ssh -p 2222" /cygdrive/b/VCS/packages/ vagrant@localhost:packages --exclude ".git/"

步骤2:我打开了一个单独的cmd窗口,我使用完整路径运行cwrsync.cmd。然后,如果我需要将更改同步到VM,我会激活该窗口,向上箭头,返回并立即更新!

修改ENV以通过@ osroot25设置cygwin修复不适用于cwRsync,因为当你强制进行cygwin检测时,&#34; vagrant ssh&#34;命令不起作用,因为需要 cygwin中的cygpath命令,你不会拥有,所以你不能ssh进入VM。如果你直接使用ssh命令和所有正确的选项,你就可以。