如果很快,當我透過 Rsync 將檔案從 Ubuntu PC 提交到 VPS 時,一切都會順利,但是如果我從 Windows 執行相同的操作,則會收到錯誤
rsync:連線意外關閉(到目前為止已收到 0 位元組)
[接收者] rsync 錯誤:io.c(235) 處的 rsync 協定資料流(代碼 12)中發生錯誤 [接收方=3.1.3]
儘管與 Linux 不同,Windows 中並未預設安裝 Rsync,但我已在 Windows PC 上安裝了 Rsync。
環境數據
- 本機 PC#1:Windows 10
- 本地 PC#2:Ubuntu 20.04.5
- 虛擬專用伺服器:Ubuntu 20.04
準備工作
我已經用clear Ubuntu初始化了VPS。為了消除方程式中的一些變量,出於安全考慮,我做了一些不應該在真實(不是像我這樣的實驗)VPS 中完成的事情。
- 我將使用 root 帳戶提交數據
- 我不會使用 SLL
另外,我還創建了/var/www/example.com避免因目標目錄尚未建立而無法同步資料的錯誤。
目標
提交內容06-生產構建目錄到 VPS。
實驗流程
在 Windows 終端機上,輸入
rsync -azve ssh --progress 06-ProductionBuild [email protected]:/var/www/example.com
已請求密碼。輸入密碼後得到:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
如果我只是輸入了錯誤的密碼,則錯誤是Permission denied, please try again
。
現在來自 Ubuntu PC 的相同命令:
一切都很好。
請給我一些提示。
嘗試過 WSL - 很好。看起來有問題從 Windows 進行 Rsync。
答案1
顯然這是因為ssh
當您僅指定-e ssh
. (更準確地說,這可能是因為 (cw)rsync 安裝目錄的 PATH 優先順序bin
低於其他相關路徑)。
在我的測試中,最簡單的解決方法是指定-e /bin/ssh
,這將使用它附帶的rsync
(cygwin) 。 ssh
(cygwin「魔法」應該會自動為您解析路徑的根,無論是否是巧克力。)
(發現原因的)歸功於評論這裡,儘管那裡提供的方法似乎不必要地笨拙。 (好吧,除非你有理由使用ssh
Microsoft 的版本。)
編輯:實際上,鏈接正確中給出的解釋對我來說似乎並不完全正確。在我的測試中,「系統」ssh 確實會known_hosts
在不同的位置使用,但當我第一次嘗試連接它並known_hosts
成功創建自己的伺服器時,它也會提示我將伺服器新增至清單。在後來的嘗試中它也沒有問我,所以顯然它可以找到自己的來讀回。因此,我不知道他的建議如何幫助他,並且指定選項/路徑無論如何對我不起作用。