← Paracosm·Docs/Reference
Contents · Restoring a backup

Restoring a Paracosm backup

tools/backup.py writes paracosm-backup-<stamp>/ with region.oar, one .iar per account, db/*.db, state/, terrain.r32 and MANIFEST.json (sizes and SHA-256 of every file). A backup made while WorldBridge's console op was refused has no region.oar, .iar or terrain.r32 (the manifest says "partial": true and lists them under "skipped"); part A below needs only db/ and state/. Check the manifest first:

python -c "import json,hashlib,sys,os; d=sys.argv[1]; m=json.load(open(os.path.join(d,'MANIFEST.json')))['files']; bad=[f for f,v in m.items() if hashlib.sha256(open(os.path.join(d,f),'rb').read()).hexdigest()!=v['sha256']]; print('bad:', bad or 'none')" <backup dir>

A. The whole server, exactly as it was (same machine or a new one)

  1. Stop OpenSim (python tools/run_server.py stop).
  2. Copy db/*.db over bin/*.db, and state/worldbridge-*.json into bin/.
  3. Copy state/OpenSim.ini, state/Regions_Regions.ini (to bin/Regions/Regions.ini) and state/config-include_StandaloneCommon.ini back only if you want the old config; otherwise regenerate it with python tools/make_config.py <bin> --force from your .env.
  4. state/WorldBridge.token keeps the old token (the MCP's token file then still matches); omit it for a new one.
  5. Start (python tools/run_server.py start), then python tools/terrain_restore.py (it should report 0 drift).

B. The region into another server (a fresh install, or beside a different world)

With WorldBridge's console op allowed (WORLDBRIDGE_ALLOW_CONSOLE=true, that is [WorldBridge] AllowConsole = true; the op answers 403 otherwise):

python tools/wb.py console command="load oar C:/path/to/paracosm-backup-<stamp>/region.oar"

or at the OpenSim console: load oar <path>. This replaces the region's objects and terrain. load oar --merge keeps what is there and adds the archive's objects.

The backup folder does not have to be inside FileRoots. FileRoots confines only the file parameters of WorldBridge's own ops (spawn_mesh, upload_texture and the like); the console op is gated by AllowConsole alone and passes the command to OpenSim unchanged, so load oar (like save oar, load iar and terrain load) reads or writes any path the OpenSim process can. That is why AllowConsole stays off unless you need it.

C. An inventory

load iar <First> <Last> / <password> <path/to/First_Last.iar>

(at the OpenSim console, or through WorldBridge's console op; WorldBridge masks the password in its logs).

Verified

2026-09-27: a full backup of this island (1.25 GB: OAR 164 MB with 2,644 objects and 4,082 assets, two IARs, nine databases) was loaded into a server built from source by build/build_server.py on separate ports: all 2,644 objects arrived in 25 s and the terrain matched the live island to 0.000 m.