Project Zomboid: Back Up and Restore Server Save & Player Data
A Project Zomboid dedicated server stores the whole world and every character inside a single save folder. If that folder is lost or corrupted, players lose their progress. This guide explains exactly where the save lives, which files make up a complete backup, and how to restore them without breaking the database.
Where the save data lives
Project Zomboid keeps all server data under a Zomboid folder in the home directory of the user that runs the server. The exact location depends on the operating system:
- Linux:
~/Zomboid/(for example/home/youruser/Zomboid/) - Windows:
C:\Users\<YourUser>\Zomboid\
You can move this location by passing -Duser.home=<path> in the server's Java arguments, so some managed hosts mount it elsewhere in their file manager (for example under a config or server-data folder). The structure underneath is always the same.
Server name matters. A dedicated server is identified by one name (default servertest). Three things must share that name: the config file servertest.ini, the sandbox file servertest_SandboxVars.lua, and the world folder Saves/Multiplayer/servertest. If they do not match, the server boots an empty world while the real save sits untouched on disk. Always preserve the server name when moving a save.
What a complete backup contains
The character and world data lives in two places. Back up both.
1. The world folder
Path: Zomboid/Saves/Multiplayer/servertest/ (replace servertest with your server name). Key files:
players.db— SQLite database holding every character on the server. In Build 41 and later, character data was moved out of the map files into this database. For multiplayer it uses thenetworkPlayerstable.vehicles.db— SQLite database for vehicles.map_*.bin— the world chunk files (one per region of the map), holding everything that has been altered: loot, built structures, dead zombies, and so on.map_t.bin— world time and metadata such as the in-game date.map_sand.bin— the active sandbox settings for the world.
SQLite may briefly create sidecar files such as players.db-wal or players.db-journal while the server is writing. They are transient. As long as you back up from a stopped server, copying players.db alone is sufficient; if any sidecar files are present, copy them too.
2. The accounts / whitelist database
Path: Zomboid/db/servertest.db. This separate SQLite database stores user accounts and the whitelist (usernames, password hashes, and access levels). It is not inside the world folder. If you only restore the world folder, the world returns but player accounts may not, so include this file in a full backup.
Backing up
The reliable approach is to stop the server first, then copy the folder. A live copy can capture a half-written database.
Manual copy
- Stop the Project Zomboid server.
- Copy the world folder
Zomboid/Saves/Multiplayer/servertest/and the accounts databaseZomboid/db/servertest.dbto your backup location. On a hosting control panel, use the file manager or an FTP client such as FileZilla. - Restart the server.
Command-line backup script (Linux)
#!/bin/bash
# Project Zomboid save backup
# Run with the server stopped for a clean copy.
ZOMBOID="$HOME/Zomboid"
SERVER="servertest" # your server name
BACKUP_PATH="$HOME/pz-backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_PATH"
tar -czf "$BACKUP_PATH/pz_${SERVER}_$DATE.tar.gz" \
-C "$ZOMBOID" \
"Saves/Multiplayer/$SERVER" \
"db/$SERVER.db"
echo "Backup written: $BACKUP_PATH/pz_${SERVER}_$DATE.tar.gz"
Scheduling automatic backups
On Linux, add the script to cron:
# Edit your crontab
crontab -e
# Daily backup at 04:00
0 4 * * * /home/youruser/scripts/backup_pz.sh >> /home/youruser/pz_backup.log 2>&1
On Windows, register the equivalent batch script with Task Scheduler:
schtasks /create /tn "PZ Daily Backup" /tr "C:\Scripts\backup_pz.bat" /sc daily /st 04:00 /f
Restoring
Always back up the current save before restoring an older one. Restoring overwrites the live data.
- Stop the server completely.
- Back up the current data (run the backup above) so you can roll back if needed.
- Extract the backup archive to a temporary folder if it is compressed.
- Replace the files in
Zomboid/Saves/Multiplayer/servertest/andZomboid/db/servertest.dbwith the backed-up versions. Keep the server name identical. - Check permissions so the server user owns the files (typically
644for files,755for folders on Linux). - Start the server and have a player log in to confirm their character loads.
Partial restores
Because characters and the map are in different files, you can mix and match:
- Recover characters, keep the current world: restore only
players.db. - Reset the world, keep characters: restore the
map_*.binchunk files and keep the currentplayers.db. (Players may then be standing in a reset area, so use with care.)
Troubleshooting
Corrupted player database
Symptoms: players cannot connect, the server errors when a player joins, or database errors appear in the log.
Fix: restore players.db from the most recent clean backup. This is why frequent backups matter; a corrupted database usually cannot be repaired in place.
Restored save loads as an empty world
Cause: almost always a server-name mismatch. The .ini, _SandboxVars.lua, and the world folder name must all match the name the server is started with.
Backups are large
The map_*.bin chunk files grow with how much of the map has been explored. Compress backups (the tar -czf above already does), prune old archives on a retention schedule, and store an off-site copy.
Good practice
- Back up from a stopped server for a consistent copy of the SQLite databases.
- Keep multiple dated copies rather than overwriting one backup, so you can roll back past a corruption you did not notice immediately.
- Back up before updates and before any wipe, and keep at least one off-site copy.
- Test a restore occasionally so you know the procedure works before you actually need it.
Looking for managed Project Zomboid server hosting? Supercraft runs Project Zomboid dedicated servers with daily backups, instant setup, and 5 region options. Plans from $5.99/mo.