Skip to content
kage

Resuming a run

Pick up an interrupted clone where it left off, and start fresh when you want to.

Cloning a large site can take a while, and runs get interrupted: you press Ctrl-C, your laptop sleeps, the network drops. kage is built to pick up where it left off.

How resume works

kage keeps a small state file inside the mirror, at <host>/_kage/state.json. When a run ends, for any reason, it holds two things: the pages already written, and the frontier that was still outstanding. Resume is on by default: the next time you run the same clone, kage skips every page it already wrote and picks the frontier back up where it stopped.

kage clone example.com
# ... press Ctrl-C partway through ...
# resume: 412 pages still to do, rerun to continue
# interrupted; resume state saved (rerun to continue)

kage clone example.com
# resume: 137 pages already done
# resume: picking up 412 pages

Ctrl-C is a clean stop: kage cancels in-flight renders, flushes the state file, and exits. You will not lose the pages already written.

Pages that failed are tried again

A page that errored, a render timeout, a host that was briefly down, is never recorded as written, so it stays in the frontier and the next run tries it again. Running the same clone a second time after a flaky network is enough to fill in the gaps.

A page that robots.txt disallows is not carried over, since a later run would only fetch robots.txt and skip it again.

Raising a page budget

--max-pages is a per-run budget, and the pages it held back stay in the frontier. That makes it a way to look before you leap:

kage clone example.com -p 20     # see what the first 20 pages look like
kage clone example.com           # happy with it, crawl the rest

Start fresh

To ignore any previous run and rebuild the mirror from scratch, delete the existing host folder first with --force:

kage clone example.com --force

This removes $HOME/data/kage/example.com/ before crawling, so nothing from a prior run carries over.

To run without reading or writing any resume state at all, for a strictly one-shot clone, use --no-resume:

kage clone example.com --no-resume