テクノロジー · 実用ガイド
rsync の「Broken pipe (32)」?SSH を調整する前に最初の失敗端を特定する
送信側の表示は受信側やリモート shell が先に落ちた後かもしれません。両端のログを保存し、最初の境界を直して再開結果を検証します。

送信側の表示は受信側やリモート shell が先に落ちた後かもしれません。両端のログを保存し、最初の境界を直して再開結果を検証します。
EPIPE は pipe または socket の読み手が閉じた後の書き込みです。 Rsync は socket I/O、file I/O、protocol stream、timeout を別の終了値にします。
1. 一回の失敗を両端で保存
完全なコマンド、両端の rsync --version、ローカル stderr、遠端サービスまたは kernel ログ、時刻と全プロセスの終了値を保存します。秘密だけを除き、順序は保ちます。
single colon の remote-shell 経路と double colon または rsync:// の daemon 経路を分けます。
2. 大きな表示でなく最初のエラーを並べる
sender の Broken pipe は読み手が消えたことだけを示します。時刻を合わせ、receiver の ENOSPC、EIO、権限、kill、mount 問題が先か確認します。
終了値 10 は socket I/O、11 は file I/O、12 は protocol stream、30 は data timeout です。255 は remote shell の場合があり、その診断も保存します。
3. ストレージ・転送・プロトコルを分類
ストレージでは宛先 filesystem、mount、block と inode、権限、quota、kernel I/O を確認します。転送では SSH 単体と中間装置を確認します。
ServerAlive 設定は無応答を検出しても disk error は直しません。--timeout も rsync の無通信境界であり万能修正ではありません。
4. 意図的に修復して再開
証明した最初の境界だけ直します。部分ファイルを残すなら --partial または --partial-dir を明示し、末尾 slash の意味を変えず再実行します。
同じ version や圧縮変更だけで原因を決めません。一度の制御された再試行で一変数だけ変えます。
5. 完成ツリーを検証
最終実行は exit 0 を要求し、同じ source と destination で itemized dry run を行います。残る差分をすべて説明します。
代表的な大容量ファイルと重要 metadata を適切な hash やアプリ検査で確認し、両端ログと修正差分を受入記録にします。
