If :
- The modification time of your files are right
- The files are not really big
- No push can be missed (or there is some kind of backlog processing)
You can use find -ctime or file -cnewer to make a list of changed file since the last execution, and copying over only the modified files (Just a glorified differential push).
This translated itself quite nicely for multiple hosts : just do a differential tar on the source, and untar it on all the hosts.
It gives you something like that :
find -type f -cnewer /tmp/files_to_send.tar.gz > /tmp/files_to_send.txt
tar zcf /tmp/files_to_send.tar.gz --files-from /tmp/files_to_send.txt
for HOST in host1 host2 host3 ...
do
cat /tmp/files_to_send.tar.gz | ssh $HOST "tar xpf -"
done
The script has te be refined, but you get the idea.