1

Сбой RSYNC происходит только при попытке синхронизировать расширенные атрибуты (Mac OS X) со следующей ошибкой.

rsync error: protocol incompatibility (code 2) at io.c(599) [sender=3.1.0]
rsync: [receiver] write error: Broken pipe (32)

Насколько я знаю, rsync требует, чтобы на целевом сервере также был установлен rsync. Я предполагаю, что эта проблема происходит, потому что я запускаю эту команду с последней версией (3.1), в то время как удаленным сервером является Mac с двумя версиями, по умолчанию используется система 2.6.9.

Как я могу убедиться, что моя команда rsync использует правильную версию удаленного rsync?

1 ответ1

1

Сначала немного предыстории: версия 2 протокола rsync не поддерживает расширенные метаданные файла. Apple добавила своего рода хак в свою версию rsync, которая отправляет расширенные метаданные в виде псевдофайлов в формате AppleDouble - то есть для файла file.txt он синхронизирует содержимое файла как «file.txt», а его метаданные - как псевдо-файл. файл "._file.txt". Версия 3 протокола rsync добавила встроенную поддержку расширенных метаданных, но, конечно, это полностью несовместимо с версией 2.

К счастью, решение простое, если вы знаете, где на удаленном компьютере установлена совместимая версия rsync: используйте параметр --rsync-path= чтобы указать, где искать совместимый пульт. Например, если rsync версии 3 установлен в /usr /local /bin /rsync3 на локальном и удаленном компьютерах, вы должны использовать что-то вроде:

/usr/local/bin/rsync3 -aNHX --fileflags --rsync-path=/usr/local/bin/rsync3 -e ssh ...etc...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .