Perhaps I have the syntax wrong, however, the following attempts to copy all files in SOURCE every time: 1. mkdir LATEST_CHANGES SOURCE BACKUP_STAGING 2. touch SOURCE/filea SOURCE/fileb SOURCE/filec 3. rsync -avi SOURCE/* LATEST_CHANGES (all files copied, as expected) 4. touch SOURCE/filed SOURCE/filee 5. rsync -avin SOURCE/* BACKUP_STAGING --compare-dest=LATEST_CHANGES always reports the three files that are in LATEST_CHANGES: building file list ... done >f+++++++ filea >f+++++++ fileb >f+++++++ filec >f+++++++ filed >f+++++++ filee ( diff SOURCE LATEST_CHANGES yields: ) Only in SOURCE: filed Only in SOURCE: filee (implying that files a,b, and c match.) SO - I'm expecting that filed and filee be copied to BACKUP_STAGING, but not files a,b, and c. ultimately, I plan to use this as follows: rsync -avi SOURCE/* BACKUP_STAGING --compare-dest=LATEST_CHANGES --compare-dest=BOM_REPO Is this a bug? Or am I just using it the wrong way?
just discovered that the behavior seems to work as it's supposed to as long as the paths are absolute paths.
You're using it the wrong way. The man page description of --compare-dest=DIR says, "If DIR is a relative path, it is relative to the destination directory." So your option should be --compare-dest=../LATEST_CHANGES .
As noted, the path needed to be tweaked to work.