rsync - необъяснимая ошибка

Я использую такой скрипт:

rsync -avu --delete --progress user@host:~/backup .

и каждый раз, через некоторое время, получаю эту ошибку:

rsync: connection unexpectedly closed (10251754 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.0]
rsync: connection unexpectedly closed (45482 bytes received so far)  [generator]
rsync error: unexplained error (code 255) at io.c(226) [generator=3.1.0]

# generator = Debian 5, rsync  version 3.0.3  protocol version 30 (Generator[A])
# receiver = Ubuntu 14.04, rsync  version 3.1.0  protocol version 31 (Receiver[A])

У меня более десяти лет опыта в rsyncЯ попробовал все, но я не могу понять, почему это происходит.

С обеих сторон: у меня нет ошибок в логах, нет странных вещей в tcpdump, нет проблем с подключением, нет брандмауэров. Передача просто внезапно останавливается через некоторое время.

Проблема не ограничивается одним сервером.

Я думал, что это может быть какой-то король несовместимости между версиями rsync, поэтому я переключаю генератор со свежим новым сервером (Debian 8) на совершенно другую ферму серверов, и я получаю обновление rsync на приемнике, но я получаю эту ошибку:

rsync: connection unexpectedly closed (31931964 bytes received so far) [receiver]
rsync: [generator] write error: Broken pipe (32)
rsync error: unexplained error (code 255) at io.c(820) [generator=3.1.2]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.2]

# generator = Debian 8, rsync  version 3.1.1  protocol version 31 (Generator[B])
# receiver = Ubuntu 14.04, rsync  version 3.1.2  protocol version 31 (Receiver[B])

Затем я попытался синхронизировать Receiver[A] с генератором [B] через прокси, и это работает

Receiver[A](Italy) <=> HTTP Proxy(Paris) <=>  Generator[B](Strasbourg)

Так что теперь у меня есть

Receiver[A] <=> Generator[A] // ERROR
Receiver[A] <=> Generator[B] // ERROR   
Receiver[B] <=> Generator[B] // ERROR

Receiver[A] <=> HTTP Proxy <=> Generator[A] // OK
Receiver[A] <=> HTTP Proxy <=> Generator[B] // OK  

Я тоже пробовал без HTTP Proxy

Receiver[A] <=> Generator[C] // OK
Receiver[A] <=> Generator[D] // OK  
Receiver[A] <=> Generator[E] // ERROR

где генераторы [C], [D] а также [E] серверы в Париже (это же серверная ферма моего HTTP Proxy) с rsync 3.0.9, prot. v. 30,

Итак, суть здесь такова: у меня есть несколько серверов в разных местах. На Receiver[A] У меня нет брандмауэра, и все работает хорошо с несколько дней назад. Сейчас rsync вернуть unexplained error и я не могу понять, почему.

Я думаю, что это какой-то король физических сетевых ошибок (не на моих машинах), но я не знаю, смогу ли я найти, изолировать и воспроизвести эту ошибку.

Спасибо за вашу помощь!

1 ответ

Похоже, вам трудно определить проблему, но нет проблем с ее воспроизведением. В этом случае может помочь, если вы устраните неполадки самого соединения SSH, а также данных, которые вы получаете по нему.

Вы можете запустить свой rsync Команда, как показано ниже, выдаст некоторые данные du:

rsync -e 'bash -x -c "ssh -vvvv $0 $@ 2>/tmp/rsync-ssh.stderr | tee /tmp/rsync.stdout"' -avu --delete --progress user@host:~/backup .

Просмотр в конце этих файлов может быть чем-то полезным. Например, если соединения SSH были прерваны, что-то должно отображаться в /tmp/rsync-ssh.stderr, И если это на самом деле проблема с другой стороны, фактический дамп протокола rsync в /tmp/rsync.stdout может иметь некоторую строковую подсказку (strings /tmp/rsync.stdout).

Если бы мне пришлось угадывать, это либо неприятный брандмауэр, либо физическая проблема, повреждающая пакеты и вызывающая разрыв соединения SSH.

Возможно, что rsync Возможно, запись в кэш диска выполняется быстрее, чем диск на сервере, с которым он может справиться, см., например, /questions/288162/udalennyij-obmennyij-schet-po-prezhnemu-predlagaetsya-avtomaticheski/288173#288173 для более подробного объяснения, и /questions/708588/ping-otvet-ne-popadaet-na-kompyuteryi-s-lokalnoj-setyu-a-podklyuchaetsya-k-marsh/708596#708596 для аналогичной проблемы, но другой случай при использовании rsync через samba/cifs навесной привод.

Возможное решение может быть для газа rsync с помощью --bwlimit= вариант. В зависимости от производительности сервера / сети на диске, я бы порекомендовал попробовать значения в диапазоне 2000-10000 (в кбит / с).

Другие вопросы по тегам