Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

rsync “Broken pipe (32)”? SSH를 조정하기 전에 처음 실패한 끝점을 찾으세요

송신자 메시지는 수신자나 원격 셸이 먼저 실패한 뒤 나타날 수 있습니다. 양쪽 로그를 보존하고 첫 경계를 고친 뒤 재개 복사를 검증하세요.

수신자 오류가 송신자 Broken pipe보다 먼저인 순서를 보여 주는 일러스트.
Watch at Ease 원본 일러스트: 양쪽 증거를 보존·정렬·분류합니다. Watch at Ease

송신자 메시지는 수신자나 원격 셸이 먼저 실패한 뒤 나타날 수 있습니다. 양쪽 로그를 보존하고 첫 경계를 고친 뒤 재개 복사를 검증하세요.

EPIPE는 파이프나 소켓의 읽는 쪽이 닫힌 뒤 쓰기를 뜻합니다. Rsync는 소켓 I/O, 파일 I/O, 프로토콜 스트림과 타임아웃 종료를 구분합니다.

1. 한 실패의 양쪽 증거 수집

전체 명령, 양쪽 rsync --version, 로컬 stderr, 원격 서비스나 커널 로그, 시각과 모든 프로세스 종료 코드를 저장하세요. 자격 증명만 지우고 순서는 남깁니다.

단일 콜론 remote-shell 경로와 이중 콜론 또는 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는 원격 셸일 수 있어 진단을 함께 보존합니다.

3. 저장소·전송·프로토콜 분류

저장소에서는 대상 파일시스템, 마운트, 블록과 inode, 권한, 쿼터와 커널 I/O를 확인하세요. 전송에서는 SSH와 중간 장비를 따로 검사합니다.

ServerAlive 설정은 무응답을 찾지만 디스크 오류를 고치지 못합니다. --timeout도 I/O 무응답 경계이지 보편적 치료가 아닙니다.

4. 의도적으로 수정하고 재개

입증된 첫 경계만 고치세요. 부분 파일을 남기려면 --partial 또는 --partial-dir 정책을 명시하고 trailing slash 의미를 바꾸지 마세요.

같은 버전이나 압축 변경만으로 원인을 단정하지 말고 제어된 재시도마다 한 변수만 바꿉니다.

5. 완성 트리 검증

최종 실행은 exit 0이어야 하며 같은 원본과 대상에 itemized dry run을 수행하세요. 남은 모든 차이를 조사합니다.

대표 대용량 파일과 핵심 메타데이터를 적절한 해시나 앱 검사로 확인하고 양쪽 로그와 수정 차이를 승인 기록으로 보존합니다.

수신자, 전송, 복사 데이터 승인 단계를 보여 주는 일러스트.
Watch at Ease 원본 일러스트: 모든 경계가 건강해야 재개합니다. Watch at Ease