Время ожидания rsync

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

Теперь я ищу файл по синхронизации файлов, а не по принципу «все сразу». как find и для каждого найденного rsync на сервере. Какой был бы самый простой способ сделать это?

Я получаю следующую ошибку:

 receiving incremental file list Write failed: Broken pipe rsync: connection unexpectedly closed (1175057 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(601)[receiver=3.0.7] rsync: connection unexpectedly closed (287 bytes received so far) [generator] rsync error: unexplained error (code 255) at io.c(601) [generator=3.0.7] 

4 Solutions collect form web for “Время ожидания rsync”

Похоже, что сервер отключается на уровне соединения SSH.

Поэтому я добавил следующие настройки:

 KeepAlive yes ServerAliveInterval 20 ServerAliveCountMax 6 

к /etc/ssh/ssh_config (или ~/.ssh/config ), и теперь это выглядит многообещающим.

Обновление: поскольку тайм-аут появляется, когда rsync создает контрольные суммы, вот несколько разных подходов, которые могут работать.

Во-первых, чтобы сохранить только один rsync открытым, вы можете (в дополнение к вариантам, упомянутым Майклом Кьерлингом) играть с опцией --sockopts . Это дает вам возможность устанавливать такие же параметры сокета, которые вы можете установить при создании сокета в коде, например SO_RCVTIMEOUT=0 чтобы отключить таймауты для приема данных.

Во-вторых, --progress-file может быть достаточной, чтобы не запускать тайм-аут, непрерывно отправляя информацию о ходе выполнения

В-третьих, вы можете выполнить поэтапную синхронизацию, например:

 for i in ls /path/to/dir; do rsync -ca $i remoteserver:/path/to/dir; done 

В-четвертых, вы можете использовать ssh в качестве механизма переноса и использовать его параметры TCPKeepAlive и ServerAliveInterval / ServerAliveCountMax в подходящем способе поддержания связи.


Исходный ответ: rsync уже выполняет пошаговый подход – он проверяет каждый файл в списке файлов, которые будут синхронизироваться, и будет синхронизировать только те, которые не существуют в целевой системе, или которые отличаются от этих файлов на целевой системе.

Что бы вы могли сделать, чтобы сократить время передачи, это использовать параметр -z который будет сжиматься во время транспортировки, а флаг – --partial чтобы, если передача была прервана, вы будете хранить какой-то частично синхронизированный файл, чтобы rsync мог продолжить, где он был. Кроме того, опции timetime и –contimeout, упомянутые Майклом Кьерлингом, вероятно, будут полезны.

Может, что-то вроде этого?

 find . -type f -exec 'rsync' '{}' ';' 

Это будет выполнять rsync один раз для каждого регулярного файла в текущем каталоге, передавая имя файла (представленное токеном {} ) в качестве параметра командной строки.

Если у вас есть символические ссылки, файлы устройств и т. Д. В соответствующем каталоге, вы можете попробовать инвертировать логику:

 find . -not -type f -exec 'rsync' '{}' ';' 

Это должно «работать», в том смысле, что вы делаете то, что вы просите (запуск rsync один раз на файл). Но у меня такое чувство, что вы идете по нему не так.

На странице --contimeout rsync перечислены --timeout (тайм-аут ввода-вывода) и --contimeout (время ожидания соединения), и это только от grepping для timeout . Рассматривали ли вы их использование?

Для меня это продолжалось при возобновлении большой передачи rsync на несколько медленном соединении. Я даже использовал rsyncd, чтобы избежать всех проблем с ssh.

Я обнаружил, что включение сжатия ( -z или --compress ) --compress проблему. Передача возобновилась почти сразу.

  • rsync и резервное копирование и изменение часового пояса
  • Как создавать резервные копии файлов теневого копирования / etc / {, g} с разрешением 0000?
  • Вызывать rsync со специфическими значениями по умолчанию для текущей папки?
  • Создайте пакет deb из разницы между двумя изображениями
  • Различия между rsync на удаленном и rsync локальном на смонтированных sshfs?
  • Выполняет ли rsync контроль над любой контрольной суммой?
  • cp или rsync, действительно ли CP это стоит?
  • Как ускорить работу с разреженными файлами с помощью tar, gzip, rsync?
  • найти и rsync?
  • Удалить посторонние файлы из dest dir через rsync?
  • Как я могу rsync только некоторые файлы в некоторых каталогах
  • Linux и Unix - лучшая ОС в мире.