Bug 14463 - rsync 3.2.2 server protocol error
Summary: rsync 3.2.2 server protocol error
Alias: None
Product: rsync
Classification: Unclassified
Component: core (show other bugs)
Version: 3.2.0
Hardware: All FreeBSD
: P5 normal (vote)
Target Milestone: ---
Assignee: Wayne Davison
QA Contact: Rsync QA Contact
Depends on:
Reported: 2020-08-11 09:48 UTC by hostmaster
Modified: 2020-08-15 17:38 UTC (History)
0 users

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description hostmaster 2020-08-11 09:48:25 UTC
*** client:    freebsd 8.4-STABLE      rsync 3.1.1

root 224 > /usr/local/bin/rsync --address= -zz -v --fileflags
--force-change --numeric-ids --force --super -8 toor@droplet02::grizzle/

rsync error: error in rsync protocol data stream (code 12) at io.c(226} [Receiver=3.1.1]

*** server:    freebsd 11.4-STABLE    rsync 3.2.2

rsync error: protocol incompatibility (code 2) at compat.c(723) [sender=3.2.2]

This started happening after I upgraded the server from rsync version
3.1.3 to 3.2.2

it works if "--fileflags" is removed
Comment 1 Wayne Davison 2020-08-11 15:43:53 UTC
Yup, the older --file-flags patch isn't compatible with the newer one.
Comment 2 hostmaster 2020-08-12 21:06:46 UTC
(In reply to Wayne Davison from comment #1)

What should we do instead to keep the same functionality?
Comment 3 hostmaster 2020-08-12 21:10:48 UTC
It's not a trivial exercise to upgrade the rsync version on the target system, so it would be useful if there was some kind of "back patch" available

| suspect there might be others with similar issues ...
Comment 4 Wayne Davison 2020-08-15 17:38:27 UTC
The pre-release patches aren't guaranteed to be backward compatible, and in this case the bits that were used in a couple different patches actually conflicted with each other. So, when --atimes was promoted it became impossible for anything using the older --fileflags patch to work with a newer rsync (or the older --crtimes option, which also had to change bits).

Your best bet is to either copy an extra rsync binary onto the non-upgraded target system (it doesn't have to be installed) and use the --rsync-path option to tell rsync where to run the newer version OR to copy an older rsync version onto the upgraded system so that you can use that rsync-old-fileflags binary to copy to a system with the older patch.