2011-02-03 101 views
4

我試圖在64位Windows 7和64位Linux之間的rsync文件。我在兩臺機器上安裝了rsync 3.0.7(Windows上的cygwin版本)。cygwin rsync協議錯誤

這是我在windows上運行的命令。我看到它建立了一個到遠程機器的連接,但是它只是在驗證之後並且在傳輸文件之前就死掉了。什麼可能導致這個問題?

rsync -vvvv localfile REMOTE-HOST:~/ 

FILE_STRUCT_LEN=16, EXTRA_LEN=4 
cmd=<NULL> machine=REMOTE-HOST user=guest path=~/ 
cmd[0]=ssh cmd[1]=-l cmd[2]=guest cmd[3]=REMOTE-HOST cmd[4]=rsync cmd[5]=--server cmd[6]=-vvvvv.Lsf cmd[7]=. cmd[8]=~/ 
opening connection using: ssh -l guest REMOTE-HOST rsync --server -vvvve.Lsf. "~/" 
note: iconv_open("UTF-8", "UTF-8") succeeded. 
Password: 
FILE_STRUCT_LEN=24, EXTRA_LEN=4 
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] 
[Receiver] _exit_cleanup(code=12, file=io.c, line=601): entered 
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [Receive 
r=3.0.7] 
[Receiver] _exit_cleanup(code=12, file=io.c, line=601): about to call exit(12) 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
[sender] _exit_cleanup(code=12, file=/home/lapo/packaging/rsync-3.0.7-1/src/rsyn 
c-3.0.7/io.c, line=601): entered 
rsync error: error in rsync protocol data stream (code 12) at /home/lapo/packagi 
ng/rsync-3.0.7-1/src/rsync-3.0.7/io.c(601) [sender=3.0.7] 
[sender] _exit_cleanup(code=12, file=/home/lapo/packaging/rsync-3.0.7-1/src/rsyn 
c-3.0.7/io.c, line=601): about to call exit(12) 
+0

不知道這是否可以幫助,但你並不需要在〜/ - 只是使用例如`rsync localfile REMOTE-HOST:`,目標將作爲你連接的用戶的主目錄。對於單個文件,我通常更喜歡'scp',例如`scp localfile REMOTE-HOST:`。順便說一句,這屬於http://superuser.com。 – 2011-02-03 21:53:01

回答

3

問題是一個矛盾的git安裝。 Git包含它自己的ssh,它的路徑在cygwin路徑之前,所以rsync使用的是git的ssh。解決的辦法是交換git/cygwin bin路徑的順序,以便rsync使用正確版本的ssh。

0

我找到了解決這個錯誤的方式加入的絕對路徑,我呼籲SSH:

rsync -avzphi --chmod=ugo=rwX --checksum --delete-after -e "C:\cwRsync\ssh.exe -p 9999 -i c:\cwRsync\ssh\test_id_rsa" "/cygdrive/c/repository/blah.com/" [email protected]:/home/test/public_html