The Samba-Bugzilla – Bug 3768
--no-specials in Rsync 2.6.8 breaks compatibility with 2.6.0-r6 Mirroring system
Last modified: 2006-07-09 22:12:35 UTC
I am publishing a small linux distribution (The Jackass! Project) which uses tiered array of rsync servers to act as a mirror distribution system. One of our mirrors updated to rsync 2.6.8 (on Gentoo). as a result, it is no longer capable of performing transactions with the mirror above it. the host mirror is running rsync 2.6.0-r6 on Gentoo vServer. it appears that the "--no-specials" parameter is now a default command line parameter, and this prevents mirrors from being able to perform an rsync. the server rsyncd.log reports the following error:
2006/05/09 17:04:45  rsync on script from mojope (188.8.131.52)
2006/05/09 22:04:45  on remote machine: --no-specials: unknown option
2006/05/09 22:04:45  rsync: on remote machine: --no-specials: unknown option
2006/05/09 22:04:45  rsync error: requested action not supported (code 4) at clientserver.c(461)
Unfortunately, this is a major show-stopper, as it has brought our entire mirroring system to a halt. Nobody using the new version of rsync can sync with the host mirror above it.
The only time that rsync sends the --no-specials option is when the user has requested only the transfer of devices and not special files. This undoubtedly means that the options passed to rsync used the --devices option, but not -D or -a. The --devices option changed slightly in meaning in 2.6.7 to only match block and character devices, while the -D option remained the same.
So, the easiest solution is to change the code running rsync to use the -D (or the -a) option. Another solution is to define a popt alias on the initiating system that makes --devices have its old meaning by putting this in either /etc/popt or the user's ~/.popt file:
rsync alias --devices -D
Aliasing the option globally is probably not that good of an idea, but for this option it might not be that bad. However, if it's possible to change how rsync is run, that is the best solution.
Closing this since there is a compatibile way to use all versions of rsync (using -D) and the new meaning of --devices is as designed.