FrontierBackup
Scheduled world backups zipped on a rolling window.
What it does
On a fixed interval (and on /backup start) the plugin saves the configured worlds on the main thread, then zips their folders asynchronously into backup-<yyyy-MM-dd-HH-mm>.zip in a directory of your choice, and prunes the oldest zips once the count exceeds max-backups.
It is deliberately small: no cloud upload, no restore command, no incremental diffs — just a rolling window of zips that a host panel or an rsync job can pick up. Because the zip step runs off the main thread, the tick loop is never blocked by file I/O, and a single-flight guard refuses a second backup while one is running.
Requires & integrates with
- Required
- Paper 26.2+, Java 25+
- Optional
- None.
- Used by
- None.
Commands
| Command | Who | What it does |
|---|---|---|
| /backup start | Admin | Start a backup now (refused if one is already in progress) |
| /backup list | Admin | List backup-*.zip files in the backup directory, newest first, with date and size |
| /backup | Admin | Print usage |
Permissions
Player features default to true, staff features to op. Every node follows frontier.<plugin>.<action>, so a LuckPerms setup is e.g. lp group default permission set frontier.shop.use true. Wildcards work: frontier.reputation.*.
| Node | Default | Grants |
|---|---|---|
| frontier.backup.admin | op | /backup start, /backup list |
Config reference
File
plugins/FrontierBackup/config.yml
To apply changes
Restart required
| Key | Default | What it controls |
|---|---|---|
| backup-interval | 720 | Minutes between automatic backups (720 = twice a day). The first automatic backup runs one full interval after startup, never at boot |
| max-backups | 3 | Rolling retention: once more than this many backup-*.zip files exist, the oldest (by file modification time) are deleted after each run |
| backup-directory | backups | Where zips are written, relative to the server root |
| worlds | [world] | World folder names to include, relative to the server root. On Paper 26.1+ every dimension lives under world/dimensions/, so one world entry captures overworld, nether and end; add entries for separately-created worlds |
| announce | true | Broadcast "Starting world backup…" / "Backup complete!" / failure messages to chat |
Good to know
- +There is no restore command — restoring means stopping the server and unzipping by hand. Size
max-backupsto your disk; each zip is a full copy of every listed world and a mature survival world can be several GB per zip. - +The zip is a "hot" copy: worlds are saved first, but auto-save is not paused while the zip walks the folder. For a guaranteed-consistent copy,
save-off+save-allfirst, or back up while the server is stopped. - +Entries in
worlds:are folder names relative to the server root, not Bukkit world names; a missing folder logsWorld folder not found, skipping. - +Filenames use the JVM’s default timezone, so hosts running UTC get UTC timestamps. Pruning sorts by file modification time, not by the timestamp in the name — copying old zips into the directory gives them a fresh mtime.
- +Watch console for
Automatic backups scheduled every N minutes.on boot, and use/backup startto test immediately.
← Previous
FrontierHeads
Drop the victim’s head on PvP kills
Next →
FrontierAnnouncements
Rotating chat announcements, per-player mute
Looking for something specific? Search the whole suite.