Skip to content

Restoring

Restores are designed to be safe to preview, undoable, and portable across machines.

Terminal window
# Where every root would go, plus the archive's README — writes nothing
savevault-cli explain backup.zip
# The archive's file inventory
savevault-cli list-files backup.zip
# Simulate the full restore
savevault-cli restore backup.zip --dry-run

The GUI’s Restore page shows the same plan and file tree before you confirm. Switch on Dry Run in the page header and the restore buttons become Preview Restore (and Preview for a multi-select), so nothing is written.

restore, explain, and list-files also accept a directory that an archive was already extracted into, in place of the archive file.

Before a restore overwrites anything, SaveVault archives the current on-disk state of everything it’s about to touch — files, and on Windows/Proton the registry keys and hives — as a normal labeled backup in your library (<Game>_pre-restore_<timestamp>_<device-tag>, with a -2, -3… suffix if that name is taken). Restoring that safety archive rewinds the restore, including deleting files the restore created, as long as you haven’t progressed them since. Registry keys the restore imported fresh are not removed by the undo. Skip it per run with --no-pre-restore-backup; on a brand-new machine with no existing saves it’s skipped automatically.

Thanks to portable placeholders, a same-OS restore just works:

Terminal window
savevault-cli restore backup.zip
savevault-cli restore backup.zip --include both # saves are the default

Restores copy back saves only by default. Change it under Settings → Restore (restore.include_mode) or per run with --include saves|configs|both. In the app, the Include: menu in a backup’s detail panel (Saves only, Configs only, Saves & Configs) overrides the default for that restore only. Windows registry data is included by default; skip it with --no-include-registry.

An archive holds one game, so restore needs no game filter. --games is a legacy game-name filter from the days archives could hold several games.

Tick individual files in the Restore page’s tree, or pass in-archive paths from list-files:

Terminal window
savevault-cli restore backup.zip --file "data/saves/appData/EldenRing/ER0000.sl2"
savevault-cli restore backup.zip --exclude "*.ini" --exclude "screenshots/"

Persistent per-game restore excludes (savevault-cli restore-excludes, or the Restore Excludes section of the detail panel) apply on top. --file works on a single archive; restore-batch has no per-file selection, though it accepts --exclude. See exclusions & file selection.

Placeholders resolve against the new machine’s environment, so a backup taken under C:\Users\Alice\AppData\Roaming restores cleanly to C:\Users\Bob\AppData\Roaming. Copy your archives over (or let cloud sync bring them), and restore a whole folder at once:

Terminal window
savevault-cli restore-batch D:/SaveVault/ --dry-run
savevault-cli restore-batch D:/SaveVault/

Bring your preferences along with a settings bundle.

Roots that were under a game’s install folder (<gameInstall> in the archive) are re-resolved against wherever that game is installed on the new machine, using your install roots, so a different drive or launcher library still lands in the right place. If the game isn’t installed yet, the root is reported as unresolved (“game install dir not found”) instead of guessed. Install the game first, or place it with --remap-root. A Unity save folder (<localAppDataLow>) goes into the game’s Steam Android container on a machine that has one, such as a Steam Frame.

Cross-platform restore is opt-in, because Windows configs rarely port to Linux cleanly without manual mapping:

Terminal window
savevault-cli restore backup.zip --cross-platform

For Wine/Proton, materialize Windows-layout saves into a prefix:

Terminal window
savevault-cli restore backup.zip --redirect-wine

Turn that on by default with scan.redirect_wine (Settings → Game Scanning → Redirect Wine saves). In the Restore page header, the Cross-Platform and Wine/Proton redirect switches set the same two options for one restore, and --no-redirect-wine turns the Wine redirect off for a single CLI run. When an archive looks like it came from another OS, a banner offers Enable Cross-Platform Restore. Roots whose placeholder can’t be resolved on the destination OS are skipped with a note rather than guessed; explain shows you which, and --remap-root lets you place them.

When several devices share the backup folder, the Restore page shows which device made each backup, and adds a Device filter (All, This device, each other device, and Unknown device for archives that record none). Once cloud backup is set up, a Sync button also appears; it triggers a cloud sync so the other devices’ latest archives are a click away. If a backup doesn’t include newer progress from another device, a warning in the detail panel (and from savevault-cli restore) says so before you confirm. On the CLI, filter the library with savevault-cli backups --device "Steam Deck" (a device name, the start of its id, or this).

Override a single root for one restore, or set persistent redirects when your library has moved drives. Under each remap field the Restore page offers Start from chips — home, Documents, the OS save folders, each Steam library, and a known Steam game’s install folder, Proton prefix, or Steam Android container — so you don’t type long paths on a handheld. For a single-file root, the remap is the full destination file path.

Terminal window
# One-off: send root 0 somewhere else (ids and starting points from `explain`)
savevault-cli restore backup.zip --remap-root 0=D:/Games/Skyrim
# Persistent prefix rewrites
savevault-cli redirects add restore C:/OldSaves D:/NewSaves
savevault-cli redirects add bidirectional D:/Games C:/Canonical/Games
savevault-cli redirects show

The Backup and Restore pages show a banner when a redirect applies, with a per-run Ignore redirects toggle (--no-redirects on the CLI). To use a different rules file for one run, pass --redirects <file> to restore, restore-batch, or explain; savevault-cli redirects path prints the default file’s location.

The Restore page lists every backup grouped by game. Search, sort by name, date, or size, and narrow the list with Filters. The filters that only matter sometimes appear on their own: Pinned and Labeled once you have any, Type once the list mixes regular backups and live snapshots, and Device once more than one device has backed up.

  • Live snapshots. Snapshots from Live Protection sit in the same list with a live snapshot badge. Set Type to Snapshots only or Backups only to separate them.
  • Verify Integrity. The button in a backup’s detail panel runs the full BLAKE3 check and reports Integrity Verified or Verification Failed. With several backups selected, Verify N backups checks them all. The CLI form is savevault-cli verify.
  • Delete. Delete (in the detail panel, on a row, or for a whole selection) asks for confirmation and then permanently removes the archive from disk and from the library. The app doesn’t check pins here. On the CLI, savevault-cli backups delete refuses a pinned backup unless you add --force.
  • Restoring several at once. Tick backups and use Restore N (Preview N with Dry Run on); it works through them one by one. If your selection holds more than one backup of the same game, snapshots and regular backups counted together, only the newest is restored and the older ones are listed as skipped. On the CLI, use restore-batch on a folder of archives.

When a game uses launcher cloud sync (Steam, GOG, Epic…), SaveVault warns you before restoring, because the launcher may overwrite a restored save on its next sync. Close the launcher — or disable that game’s cloud — before restoring if in doubt.