cwRsync 向遠程同步文件失敗: Error: dup() in/out/err failed 問題的解決方法

我在windows上 安裝好了 cwRsync客戶端,並將 bin的路徑加入到了環境變量 path 中;在遠程 linux 服務器上 安裝並配置了 rsync。此時向遠程服務器同步數據:

.\rsync.exe -a "/cygdrive/d/a.bat"  [email protected]:/root/

結果失敗,報錯:

Error: dup() in/out/err failed
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

 

在Stack Overflow上,我看到了類似問題:

原因是 ssh 的版本和 rsync 的版本不匹配。

 

我用 where ssh 查看了ssh 所在的目錄,發現ssh有好幾個。

原來,我之前裝過的 Git 也有 ssh.exe 這個程序,而它也配置在了 環境變量 path 中。而 rsync 調用了Git 的 ssh,導致錯誤。

解決的方法有多種。

方法1. 在調用命令時,顯式指定 ssh 的路徑:

.\rsync.exe -a -e " .\ssh -p 22" "/cygdrive/d/a.bat"  [email protected]:/opt/

這裏," .\ssh -p 22" 表明我指定使用的是當前目錄中的 ssh。

 

方法2. 修改 環境變量 path,把 cwRsync 的bin 的路徑其他包含ssh的文件夾路徑的前面。

缺點:其他程序可能會使用 cwRsync 的ssh 而不是他們自己的ssh,造成錯誤。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章