我正在尝试将内容从本地计算机(64位上的Windows 7)到远程服务器(64位上的Ubuntu 8)进行rsync,但它失败了。任何一条建议都非常受欢迎,因为我已经花了太多时间用这个废话......提前致谢!
$ 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
答案 0 :(得分:1)
答案 1 :(得分:0)
好的,看看这个。 GitBash附带了一堆* nix实用程序(包括ssh
),但cwRsync还带有ssh
。现在,在我的系统上,GitBash附带的ssh
版本疯狂地过时了,而cwRsync附带的版本是最近的。如果我从GitBash内部运行which ssh
,显然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。