Почему rsync терпит неудачу с Broken pipe (32), ошибка в сокете ввода-вывода (код 10) в io.c(820)?

Почему rsync терпит неудачу с Broken pipe (32), ошибка в сокете ввода-вывода (код 10) в io.c(820)?

Я купил новый жесткий диск для своего сервера и пытаюсь реорганизовать свои файлы. Для первой передачи rsyncскопировал ~3 ГБ идеально. Однако с эквивалентной 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]

Первый запуск скопировал около 550 из 800 ГБ, прежде чем задохнуться. Более поздние попытки скопировали только 1 ГБ, прежде чем умереть. Я не уверен, относится ли это к делу, но источник —назад во времениинкрементальный резервный диск, поэтому он содержит тонну жестких ссылок. Как исправить эту ошибку и завершить команду?

Я использую 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 имеет скорость 60 МБ/с /4 для чтения на 2 дисках или /10 для поиска на не SSD... или приобретите XU4 с 2 ГБ ОЗУ и USB3.
  • изменить параметры памяти ядраecho 100 > /proc/sys/vm/watermark_scale_factor
  • принудительно очистить память во время работыecho 3 > /proc/sys/vm/drop_caches
  • убедитесь, что вы используете ядро ​​4.9.29uname -r

Связанный контент