テクノロジー · 実用ガイド

rsync の「Broken pipe (32)」?SSH を調整する前に最初の失敗端を特定する

送信側の表示は受信側やリモート shell が先に落ちた後かもしれません。両端のログを保存し、最初の境界を直して再開結果を検証します。

receiver エラーと sender Broken pipe の順序を示すイラスト。
Watch at Ease オリジナルイラスト:両端を保存、整列、分類します。 Watch at Ease

送信側の表示は受信側やリモート 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 やアプリ検査で確認し、両端ログと修正差分を受入記録にします。

receiver、transport、copy data の受入ゲートを示すイラスト。
Watch at Ease オリジナルイラスト:全境界の健全性後に再開します。 Watch at Ease