Comment by throebrifnr
Comment by throebrifnr 12 hours ago
Gz has --rsyncable option that does something similar.
Explanation here https://beeznest.wordpress.com/2005/02/03/rsyncable-gzip/
Comment by throebrifnr 12 hours ago
Gz has --rsyncable option that does something similar.
Explanation here https://beeznest.wordpress.com/2005/02/03/rsyncable-gzip/
zstd also has an rsyncable option -- as an example of when it's useful, I take a dump of an SQLite database (my Home Assistant DB) using a command like this:
sqlite3 -readonly "${i}" .dump | zstd --fast --rsyncable -v -o "${PART}" -
The DB is 1.2G, the SQL dump is 1.4G, the compressed dump is 286M. And I still only have to sync the parts that have changed to take a backup.
Rsyncable goes further: instead of having fixed size blocks, it makes the block split points deterministically content-dependent. This means that you can edit/insert/delete bytes in the middle of the uncompressed input, and the compressed output will only have a few compressed blocks change.