Suppose I have a series of sparse incremental backups and I want to make a new backup, specifying all the previous ones as --compare-dest dirs. Any source file that differs from its last recorded state in the backup series should be copied to the destination. However, in the current --compare-dest implementation, the file is only copied if it differs from *all* recorded states. Thus, if the file is changed and then reverted, the reversion won't be represented in the backup series. To fix this, we need a way to make --compare-dest dirs specified earlier on the command line hide later ones. Then the correct result is obtained by listing the previous backups in order from newest to oldest. Wayne suggested a while ago that this new behavior should become the default: http://lists.samba.org/archive/rsync/2007-January/017186.html I'm not so sure because I have a use case for the current behavior. In reviewing obsolete versions of my Web site for content that I might want to keep, I had several trees with some differences among them. I wanted to identify files in one tree that were not matched in any of the other trees and copy them to a new tree for review, so I used multiple --compare-dest dirs and relied on rsync to omit files matched in any of the dirs. Wayne, if this use case isn't important enough, please feel free to change this report from an enhancement to a bug and change the default behavior.
I think the current behavior is broken for the most useful use of multiple --compare-dest directories. For your alternative use-case, a less easy way to do the same thing would be to specify --link-dest and check to see which files ended up with no hard links.