Cold Spare

HOME INFRASTRUCTURE · MEASURED

The unglamorous half of running your own server

A cold spare is the machine on the shelf, unplugged, for the day the running one dies. This is about that half: the backups, the restores, and the settings that decide whether a power cut costs you an afternoon or a year of photographs. Every number here comes out of a script that is published next to it.

COMPRESSION

360x the time, 6.8% more saved

What the slowest backup setting buys over the fast one, on data a home server actually holds.

DURABILITY

A factor of ninety, off by default

On macOS, asking the drive to genuinely flush costs that much. SQLite does not ask unless you tell it to.

METHOD

Every script published

Corpus builder, benchmark, chart generator, raw JSON. Rerun it and disagree with the data.

What has been measured so far

Two questions, settled by running the thing. Each page carries the question, the script, the machine, and the raw output.

Backup compression

Thirteen settings across five kinds of data on a 282 MB corpus you can rebuild from public URLs. Photographs and video compress by nothing at all, which changes the whole argument — and the restore column, which nobody prints, is wider than the ratio column.

Read the measurement →

SQLite durability

Home Assistant, Immich, Paperless and Miniflux all keep state in SQLite and all pick journal_mode and synchronous for you. Thirty-six configurations measured, including the macOS flag that makes synchronous=FULL mean what its name implies — at ninety times the cost.

Read the measurement →

Backup window calculator

Enter your data mix, your window and your link speed. It applies the measured per-type ratio and throughput to your numbers and tells you which setting finishes before morning, and whether the CPU or the network is what you are waiting for.

Open the calculator →

A few results, without the article around them

Measured on an Apple M4 with 10 cores. Absolute figures move with the hardware; the orderings should not. Raw output and scripts.

Photos, any codec1.01x — JPEG has nothing left to give
Video, any codec1.00x — the same, more so
zstd -3 -T0, whole corpus1.72x in 0.15 s · saves 118.3 MB of 282
xz -9, whole corpus1.81x in 54.7 s · saves 126.4 MB of 282
bzip2 -9, reading back58 MB/s on mixed data — about 10 h per restored TB
SQLite, 1 row per commitWAL + NORMAL: 53,969 rows/s · journal + FULL: 4,781
Same, with fullfsync ON211 rows/s · 68 rows/s
Macro photograph of a circuit board

METHOD

A measurement you cannot rerun is an opinion with a decimal point

The corpus builder, the benchmarks, the chart generator and every line of JSON output are published under CC0. If your hardware disagrees with these numbers, that result is worth more than another one that agrees.

Two things worth knowing before you trust any of this

Both are set out in full on the about page, which is where a site should put the parts that reflect badly on it.

This domain has a pastBulk casino and loan spam sat here in 2022–2024 under a previous holder, and the resulting manual action is still live
How the writing is madeMeasurements are programs; the prose is drafted with a language model from those results and then checked by a named human