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

несовместимость протокола rsync

При выполнении запроса rsync с удаленного сервера с помощью следующей команды:

/usr/bin/rsync -av -e ssh --delete --chmod=a+rwx,g+rwx,o-wx --dry-run username@server:/remote/path/ /home/dir/local/path

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

receiving file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]

При выполнении обратного (например, PUSH) с удаленного на локальный, я получаю следующее:

building file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(468) [sender=2.6.8]

Я попытался удалить параметры один за другим, и, похоже, это связано с флагом -a

Окружающая среда

# local machine
Linux lbox 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
# rsync version
rsync  version 3.0.7  protocol version 30

# remote machine
FreeBSD rbox 6.4-STABLE FreeBSD 6.4-STABLE #0: Mon Feb 22 01:05:13 EST 2010     UNIX-BSD
rsync  version 2.6.8  protocol version 29

Можно ли это легко решить?

Коробка FreeBSD имеет шестилетнюю версию rsync, которая использует более старую версию протокола. Вы можете заставить новую версию rsync использовать старый протокол, добавив --protocol=29 на ваш rsync команда.

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

т.е.

машина 1 (происхождение) >> машина 2 (посредник) >> машина 3 (место назначения)

machine 1: rsync  version 2.6.8  protocol version 29
machine 2: rsync  version 3.0.3  protocol version 30
machine 3: rsync  version 3.0.7  protocol version 30