Ubuntu

RSYNC 通過 SSH 定期失敗,管道損壞

  • August 7, 2016

送出後腳本呼叫rsync命令將文件從 SVN 系統更新到生產 Web 伺服器,兩者都執行 Ubuntu 10.04.3、3.1.1 rsync。該問題也出現在rsync3.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連接解決方案。

引用自:https://unix.stackexchange.com/questions/241866