1

我正在尝试将内容从本地计算机(64 位 Windows 7)同步到远程服务器(64 位 Ubuntu 8),但它失败了。任何建议都非常受欢迎,因为我已经花了太多时间在这个废话上......提前致谢!

$ ls -al
total 3
drwxr-xr-x    4 www www     4096 Jun  7 11:04 .
drwxr-xr-x    5 www www     4096 Jun  7 13:13 ..
drwxr-xr-x    7 www www        0 Jun  7 11:04 release-20110607110404

$ rsync -avz ./release-20110607110404/ www@web1:/home/www/
opening connection using: ssh -l www web1 rsync --server -vvlogDtprze.iLsf . /home/www/
select: Bad file number
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(610) [sender=3.0.8]

$ rsync --version
rsync  version 3.0.8  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, no xattrs, iconv, symtimes   
4

2 回答 2

1

嘿,我想通了,至少找到了问题的根源......它在 msysgit(code.google.com/p/msysgit)的 g​​it bash 中不起作用,但它在常规 Windows 命令行中起作用!奇怪的!!!

于 2012-05-30T22:08:50.083 回答
0

好吧,看看这个。GitBash 带有一堆 *nix 实用程序(包括ssh),但 cwRsync 也带有ssh. 现在,在我的系统上,sshGitBash 附带的版本已经过时了,而 cwRsync 附带的版本是最新的。如果我which ssh从 GitBash 内部运行,显然 GitBash 版本会出现。那么,猜猜rsync将使用哪个版本?我猜是错误的。

你可以解决这个问题。

您正在尝试运行此命令:

rsync -avz ./release-20110607110404/ www@web1:/home/www/

但是由于您想使用不同的ssh,您需要这样的东西:

rsync -avz -e '<path to cwRsync ssh> www@web1' ./release-20110607110404/ :/home/www/

现在,如果你和我一样,你会遇到另一个问题,那就是ssh抱怨你的 ssh 配置文件有错误的权限。那是因为它正在寻找/cygdrive/<the correct path to your config file>某种原因。但这也是可以修复的:

rsync -avz -e '<path to cwRsync ssh> -F <path to ssh config> www@web1' ./release-20110607110404/ :/home/www/

现在,请记住,您必须使用ssh的 ssh 配置文件的路径必须采用愚蠢的 Windows 反斜杠格式(如果我不使用该格式,至少我的系统似乎会抱怨)但我相信这会起作用为你,你可以留在 GitBash 而不是使用 cmd。

于 2014-06-20T09:11:50.527 回答