rsync错误:文件号错误

时间:2011-06-07 17:37:37

标签: windows-7 rsync msysgit ubuntu-8.04 cwrsync

我正在尝试将内容从本地计算机(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   

2 个答案:

答案 0 :(得分:1)

嘿,我想通了,至少发现问题的来源......它不能在msysgit(code.google.com/p/msysgit)的git bash中运行,但它可以在常规的Windows命令行中运行!怪异!!!

答案 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。