I'm trying to understand the behaviour of rsync when used with the --write-batch or --only-write-batch options. I did some tests where I had two fairly big file trees, think a rootfs, where their only difference was an extra file containing only one character. I noticed the batch file was ~100kB and after inspecting it with hexdump it looks like it contains the whole list of files including their timestamp and possibly size? (not sure about that) even though none of them have changed.
I tried several options to see if there is one of them that will cause the batch file to only contain the changed files but couldn't find any. My current approach is to find the list of files that changed between the 2 trees and then create a batch file using rsync invoked with only those specific files. In that case the one char change produces a 110 byte batch file.
Is there a reason that rsync includes the list of all the files in the batch file? Could this be improved by doing what I now do manually in rsync itself?