zsync delivers a new version of a file you already have. The server publishes a small .zsync sidecar of block checksums for the target file:

ubuntu.iso
ubuntu.iso.zsync

The client reads it, examines the local file, and fetches only changed blocks:

zsync http://example.com/ubuntu.iso.zsync

For a 4 GB ISO with 300 MB of changes, that is roughly 300 MB transferred instead of 4 GB.

At scale the key property: the server needs nothing special — an ordinary web server or CDN, and no copy of your old file:

zsyncrsync
Old file on the clientyesyes
Old file on the servernousually
Works over HTTPyesnot normally
Server-side software requirednousually
Best forpublic downloadsgeneral synchronisation

Closest to a torrent client reusing pieces it already has, but from a local file and over plain HTTP rather than peer-to-peer.

AppImages Link to this section

An .appimage.zsync is the same sidecar for an AppImage, consumed by AppImageUpdate:

AppImageUpdate YourApp.AppImage

It downloads the .zsync, compares it with the local AppImage, fetches changed chunks and rebuilds the file. The sidecar is never used directly; deleting it breaks delta updates for that AppImage.

References Link to this section