io.c(820)의 소켓 IO(코드 10) 오류로 인해 rsync가 끊어진 파이프(32)로 인해 실패하는 이유는 무엇입니까?

io.c(820)의 소켓 IO(코드 10) 오류로 인해 rsync가 끊어진 파이프(32)로 인해 실패하는 이유는 무엇입니까?

서버용 새 하드 드라이브를 구입하고 파일을 재구성하려고 합니다. 첫 번째 전송의 경우 rsync~3GB를 완벽하게 복사했습니다. 그러나 해당 rsync명령을 사용하면 두 번째 전송이 실패합니다.

$ sudo /usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 rsync -aEHAXPx /media/a/ /media/b --delete
...
rsync: [sender] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.1]

첫 번째 실행에서는 질식하기 전에 800GB 중 약 550GB를 복사했습니다. 최근 시도에서는 죽기 전에 1GB만 복사했습니다. 관련성이 있는지는 모르겠지만 출처는 다음과 같습니다.시간을 거슬러증분 백업 드라이브이므로 수많은 하드 링크가 포함되어 있습니다. 이 오류를 수정하고 명령을 완료하려면 어떻게 해야 합니까?

rsync 버전 3.1.1 프로토콜 버전 31을 실행 중입니다.

답변1

dmesg | grep rsync

[85852.560086] 메모리 부족: 프로세스 4242(rsync) 점수 194 종료 또는 하위 희생 [85852.562695] 종료된 프로세스 4243(rsync) total-vm:121948kB, anon-rss:65752kB, file-rss:4kB – Sparhawk

솔루션:

  • rsync 속도를 디스크 속도보다 낮게 변경하십시오. --bwlimit=6000.. USB 2는 2개 드라이브를 통한 rw의 경우 60MB/s /4이고 SSD가 아닌 탐색의 경우 /10입니다. 또는 2GB RAM 및 USB3을 갖춘 XU4를 구입하세요.
  • 커널 메모리 매개변수 변경echo 100 > /proc/sys/vm/watermark_scale_factor
  • 작동 중에 메모리를 강제로 제거합니다.echo 3 > /proc/sys/vm/drop_caches
  • 커널 4.9.29를 사용하고 있는지 확인하세요.uname -r

관련 정보