Назад | Перейти на главную страницу

соединение rsync закрывается примерно через час

Я запускаю некоторую команду в cron, которая выполняет rsync по двум центрам обработки данных. Скорость соединения между дата-центрами составляет около 1 Мбит / с. Я заметил, что rsync продолжает давать сбой от 2,7 до 2,9 ГБ переданных данных, что может составлять около часа или более при указанном соединении. Раньше я знал, что наш брандмауэр настроен на закрытие бездействующих соединений, которые открывались более часа.

Но действительно ли передача rsync будет бездействующей? Что я могу сделать, чтобы это исправить?

Ошибка:

rsync: соединение неожиданно закрыто (на данный момент получено 2987596424 байта) [получатель]

Ошибка rsync: ошибка в потоке данных протокола rsync (код 12) в io.c (605) [Receiver = 3.0.9]

rsync: соединение неожиданно закрыто (на данный момент получено 523 байта) [генератор]

Ошибка rsync: ошибка в потоке данных протокола rsync (код 12) в io.c (605) [generator = 3.0.9]

У меня уже есть это в моем ~ / .ssh / config (но, может быть, эти значения нужно увеличить?):

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 15

Простое сетевое соединение во время передачи rsync:

Да, rsync мог остаться тихо во время чтения с диска и пока у них нет пакетов для отправки ...

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

rsync процесс на обоих концах, чтение целых файлов для поиска разницы между пакетами на основе ранее вычисленных контрольных сумм.

Хотя нет никакой разницы между файлами на обоих концах, они могут не обмениваться между обоими сторонами, пока не будут обнаружены различия.

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

В котором мы можем увидеть, что прошло несколько секунд без данные:

TIME                     BLOCKS           BYTES
                        IN  OUT      IN     OUT
...
Jul 28 15:00:07 2013   449   41   23443 1526403
Jul 28 15:00:08 2013     0    0       0       0
Jul 28 15:00:09 2013     0    0       0       0
Jul 28 15:00:10 2013   143  182   21348 1123986
Jul 28 15:00:11 2013   112  142    6966  523326
Jul 28 15:00:12 2013    31   30    1942    1890
Jul 28 15:00:13 2013    30   28    1853   88038
Jul 28 15:00:14 2013     0    0       0       0
Jul 28 15:00:15 2013    57   66    3954   38301
...

Обходной путь:

В качестве обходного пути вы можете использовать совместное использование ssh на основе сокетов:

Сначала запустите простой ssh ​​для подвешивания сокета и подключения

ssh -M -o ControlPath=$HOME/.ssh/socket_test destHost ping -n localhost

Чем в другом окне:

rsync -e 'ssh -e none -S $HOME/.ssh/socket_test' /src/file destHost:/dst/file

Таким образом, для обоих будет использоваться только одно соединение. ssh-сессии. В ping обеспечит (много) непрерывного трафика, чем rsync может работать тихо, используя то же сетевое соединение.