Skip to content

Backups & restore

Set this up on day one. Everybody agrees backups matter; almost nobody configures them until the day they need one. 15 minutes.

Sidebar → Server & Health → Backups

Two different things get backed up

BackupContainsSize
DatabaseEvery school, student, fee, mark, setting — all the dataSmall, grows slowly
FilesUploaded photos, documents, certificates, logosLarge, grows fast

The database is the one that matters most. Rebuilding files is painful; rebuilding a database is impossible.

Backups work on shared hosting

The backup engine is written in pure PHP. It does not need shell access, mysqldump or any special hosting feature — it was built for shared hosting deliberately.

Turn on automatic backups

On the Backups screen, set the schedule:

SettingMeaningSensible value
EnabledWhether automatic backups run at allOn
FrequencyDaily, weekly, monthlyDaily
TimeWhen it runsSomething quiet, like 03:00
Keep daysHow long to keep old backups14 to 30

Old backups are deleted automatically once they pass keep days, so the disk does not silently fill.

Automatic backups need the cron job

Like everything scheduled, this runs from the cron job. No cron means the schedule is saved, looks correct on screen, and never runs.

Check that a backup actually appeared the day after you set it up. Do not assume.

Taking a backup by hand

Press the button to create one immediately. Always do this before:

  • Applying a software update
  • Restoring anything
  • Bulk-importing students
  • Any change you are not sure about

Files backups and cloud storage

If your media is on S3, R2 or Wasabi, the files backup will tell you there is nothing local to back up. That is correct — cloud storage should be protected with the provider's own versioning or replication, not by copying it into a zip.

Restoring

Restoring replaces everything

A database restore overwrites every school's data with the contents of that backup. Anything entered since the backup was taken is gone.

You will be asked to type RESTORE in capitals. That is deliberate.

What the system does when you restore:

The second step is the important one: before overwriting anything, the system dumps your current database to a file named pre-restore-<date>.sql.gz.

So if you restore the wrong file, you are not stranded — restore the pre-restore file and you are back where you started. If the restore fails partway, the error message tells you that filename.

Files backups cannot be restored from this screen

A .zip files backup has to be downloaded and extracted manually into place. Only database backups restore automatically.

Backing up one school

There are also per-school backups, for when a single school needs its data — because it is leaving, or because someone deleted something that only affects them.

That means you can restore one school without rolling every other school back, and you can extract a single school from a full backup.

Download backups off the server

A backup on the same server is not a backup

If the server dies, is suspended, or the hosting account is closed, your backups die with it. This is the single most common way people lose everything while having a backup system that worked perfectly.

Download a copy regularly and keep it somewhere else — your computer, cloud storage, anywhere not on that server.

Test a restore before you need one

Once, on a spare install or a fresh database, take a backup and restore it. Ten minutes, and it is the only way to know your backups are real.

An untested backup is a guess.

Common problems

What you seeCause
No backups appear despite a saved scheduleThe cron job is not running
Backups stop after a whileDisk full — check storage, lower keep days, download and delete old ones
Restore fails partwayUse the pre-restore file named in the error to get back
Files backup says nothing to back upMedia is on cloud storage — use the provider's versioning
Restore finishes but the site looks staleCaches are cleared automatically; if not, clear them from Server Health