Ubuntu
RSYNC 通過 SSH 定期失敗,管道損壞
送出後腳本呼叫
rsync
命令將文件從 SVN 系統更新到生產 Web 伺服器,兩者都執行 Ubuntu 10.04.3、3.1.1rsync
。該問題也出現在rsync
3.0.7 中,升級到 3.1.1 是一個故障排除步驟。無論文件是否需要更新,我都會定期收到:
Write Failed: Broken pipe rsync: connection unexpectedly closed (xxxx bytes sent so far) [sender]
當管道中斷非常冗長的輸出時,99% 的時間結束於:
send_files(2, /some/path/to/.htaccess) send_files(3, /some/path/to/file1.zip) send_files(4, /some/path/to/file2.zip) send_files(5, /some/path/to/file3.zip) send_files(6, /some/path/to/file4.zip) send_files(7, /some/path/to/index.php) recv_files(22) starting [sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(255)
SSH
並且SCP
連接保持活動狀態並且對兩台伺服器都可以正常工作沒有問題。如果我rsync
連續執行該命令 10 次,大約 50% 的時間它可以正常工作。從所有目錄傳輸文件都會出現這種症狀,所以我不認為它是某種文件類型或權限問題。更多輸出:
send_files(27, /a/different/path/verdana.ttf) recv_files(50) starting [sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(255)
send_files(25, /yet/another/path/unsubscribe.htm) recv_files(162) starting [sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(255)
下面是一個命令範例:
rsync -azv --delete --exclude=.svn /svn/path -e ssh user@server:/remote/path
您提到每當失敗時您都會看到 TCP RST 數據包。這聽起來類似於以下文章中提到的防火牆可能斷開連接的問題,該問題也可以通過重新使用掛起的 ssh 連接來解決。 rsync-connection-closure-right-around-a-hour
還有一個選項 –timeout=
$$ timeout value $$但我認為它不如掛ssh連接解決方案。