SQLite has an official tool for this, fwiw: https://www.sqlite.org/rsync.html
It works at the page level:
> The protocol is for the replica to send a cryptographic hash of each of its pages over to the origin side, then the origin sends back the complete content of any page for which the hash does not match.