在运行CoreOS虚拟机的stream浪汉上使用rsync

我正在使用Windows 8.1 Pro电脑运行vagrantcygwinrsync

我正在configuration如下:

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] 

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

Solutions Collecting From Web of "在运行CoreOS虚拟机的stream浪汉上使用rsync"

从我的测试中,如果您使用的是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。 然后,如果我需要将更改同步到虚拟机,我激活该窗口, 向上箭头,返回和更新是即时!

修改ENV设置cygwin修复由@ osroot25不能用于cwRsync,因为当你强制cygwin检测,“vagrant ssh”命令将无法正常工作,因为它需要在cygwin,你不会有cygpath命令,所以你不能ssh进入虚拟机。 那么你可以,如果你使用ssh命令直接与所有正确的选项。

就像我在github问题中所评论的那样,在你的Vagrant文​​件中的以下行将最能解决你的问题

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

由于这是在你的Vagrant文​​件本地,源文件可以保持不变

解决方法:只需在cygwin终端上输入ln -s /cygdrive/c/ /c

有一个hacky的方式来解决这个问题(无论如何工作),你必须改变

 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

1.5.x的版本不同,你可以在这里阅读这个主题: https : //github.com/mitchellh/vagrant/issues/3230

但是,我将首先承认,编辑核心是远远不够理想的。