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:
| zsync | rsync | |
|---|---|---|
| Old file on the client | yes | yes |
| Old file on the server | no | usually |
| Works over HTTP | yes | not normally |
| Server-side software required | no | usually |
| Best for | public downloads | general 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
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.