A backup that only uploads blocks that have changed since the previous snapshot.
An incremental backup captures only the data that has changed since the previous snapshot, instead of re-copying every file from scratch.
Historically, “incremental” meant at the file level — tools compared modification timestamps and copied any file whose mtime had moved since the last run. That works, but it re-uploads an entire 40 GB project file whenever you change one slider in the catalog. Modern engines do incremental at the block level: chunk the file, hash each chunk, and only upload the chunks whose hashes the repository has never seen. The result looks the same to you — a fresh snapshot that captures today’s state — but the bytes on the wire are a tiny fraction of the files touched.
Crucially, every snapshot in a well-designed engine is a full snapshot from the restore side. There is no “base + chain of increments” to walk. Each snapshot is directly restorable on its own; the incremental work happens only on the write path. Lose a snapshot mid-chain, and the others still restore cleanly.
In macup, every scheduled run is an incremental. After the first full upload, a typical nightly snapshot on a working Mac moves a few hundred megabytes — change logs, new photos, edits to in-flight projects — even when you’ve touched files totaling many gigabytes. Restore still gives you the full tree, fast.