BackupBinder

A site archive on this machine you can restore.

BackupBinder keeps a versioned archive of a site directory here. You can copy that archive somewhere else if you want to, but a backup with no remote is already finished. Restore into an empty folder away from the live site so you can tell the archive is good.

What it does

A backup has four parts.

The site is a directory on this machine. Files are always included; a database dump is added when an addon (for example WordPress) says the tree has a database.

  1. Capture Files from a local path, or from an SFTP server after they are copied here.
  2. Archive A versioned local repository that stores unchanged data once.
  3. Copy out Optional destinations off this machine. With none enabled, the run never leaves this computer.
  4. Restore check Extract into an empty scratch directory away from the live site and compare it to the manifest.

Browser, command line, or agent.

All three drive the same backup. Commands print JSON so a script or agent can read the result; the browser is mainly for setup and for reading the last run.

  • Browser

    Run serve on this machine, set up a backup, and check the last run plus whether a restore has been verified.

  • Command line

    Setup, backup, check, and restore from the terminal. Failures come back as JSON with a code and a message.

  • Agent

    An agent calls the same tools over MCP on this machine, names the exact site before changing anything, and asks you when it needs a host, user, or key. Details are in Agents.

You can check that a restore works.

These rules apply on every run.

On every run

Archive
Lives on this machine. Secrets stay out of the site file and out of command output.
Restore
Empty scratch only. The live site and the repository are refused.
Remotes
Optional copies. With none enabled, a backup is finished on this computer.

Id and root matching, addons, and the full restore path are covered in Docs.

Install, back up, then check a restore.

Run doctor, take a first backup with setup, then test_restore into an empty scratch folder. When the inventory matches, you know the archive is usable.

Get started

  1. Doctor
    ./bin/backupbinder doctor
  2. Setup Creates the first archive
    ./bin/backupbinder setup
      --path /path/to/site
  3. Test restore
    ./bin/backupbinder test_restore
      --id SITE
      --root /path/to/site