Backups

Every change that touches a vhost file takes a snapshot first. Creating a site, editing one, deleting one, toggling one, restoring an older snapshot — each of them copies the current configuration before writing anything.

You do not turn this on and there is nothing to remember. It is why deleting the wrong site is an inconvenience rather than an afternoon.

What is captured

Two files, each snapshotted independently:

SourceBackup name
httpd-vhosts.confhttpd-vhosts.conf.backup-<timestamp>
httpd-vhosts.conf.disabledhttpd-vhosts.conf.disabled.backup-<timestamp>

Both live alongside the originals in /opt/homebrew/etc/httpd/extra/, and the timestamp is sortable, so the newest is always last alphabetically.

This is a snapshot of your site list, and only that. It does not include httpd.conf, /etc/hosts, your certificates or your document roots. Restoring one brings sites back; it does not undo an HTTPS change or a PHP switch.

An empty or near-empty source file is skipped rather than saved, so a failure mid-write cannot quietly replace your good backups with nothing.

The panel

Sites → Backups lists every snapshot with its date, size and which file it came from. Each row offers four things:

Restore copies the snapshot back over the live file and restarts Apache — after taking a fresh backup of the current state first, so restoring is itself undoable.

Preview shows the file's contents without restoring anything. Worth a look before you commit to one.

Export opens a native save sheet, defaulting to ~/Downloads, so you can keep a copy somewhere the pruning cannot reach.

Delete removes that snapshot. Delete all — also under Settings — clears every one of them.

To delete several at once, tick their checkboxes and press the Delete button that shows how many are selected. Shift-click ticks every row between two clicks.

Pruning

Fifty snapshots are kept per file, oldest pruned first. Fifty is generous in practice: it covers weeks of ordinary work, and a busy afternoon of adding and removing sites will not push out something you still needed.

If a particular state matters — a machine you have finished setting up, a configuration you want to reproduce elsewhere — export it. Exported copies are ordinary files and are never touched again.

Restoring by hand

The backups are plain Apache configuration with a timestamp suffix. Without the app:

cd /opt/homebrew/etc/httpd/extra
cp httpd-vhosts.conf.backup-2026-08-24_09-15-32 httpd-vhosts.conf
sudo apachectl restart

After restoring, run Repair on the Virtual Hosts panel. The snapshot restores the vhost blocks but not /etc/hosts, and Repair is what brings the two back into agreement — see virtual hosts.