Skip to content

Exclusions & File Selection

SaveVault gives you three related tools for controlling which files move: backup exclusions, restore excludes, and per-file restore selection. All three share one pattern dialect, and the GUI’s checkboxes are sugar over the same settings the CLI edits.

Pattern matching is case-insensitive. (The one exact-match exception is restore --file, which takes a literal in-archive path rather than a pattern. See per-file selection.)

Pattern Matches
*.log — no / A file name, or any single path component, anywhere.
shadercache/ — trailing / Any directory with that name, anywhere.
Saves/Autosave*/**, **/thumbs/*.png — contains / Relative to each save location (for backups) or the restored root (for restores). ** crosses directories.

A trailing / always takes precedence: a pattern that ends in / is treated as a single directory name, even if it also contains a / elsewhere. So Saves/Autosave*/ can never match anything. Write Saves/Autosave*/** to exclude everything under those folders.

Patterns containing a / are also tried against the full absolute path, not just the path relative to the save location. A leading ./ is an exact-path anchor: ./save.dat ties that name to the save location it sits in, where a bare save.dat would match the name anywhere. A pattern that isn’t a valid glob is skipped with a warning in the log, so a typo can never fail a backup.

Registry ignores (Windows, and Proton hives on Linux) use subtree semantics: an entry ignores itself and everything under it.

Exclusions apply wherever backups are collected: manual, scheduled, wrap, and live snapshots. There’s a global list, a per-game list, and a built-in recommended preset of common noise (*.log, logs/, *.tmp, *.dmp, *.mdmp, *.crash, cache/, caches/, shadercache/, crashes/, crash_reports/, Thumbs.db, .DS_Store). The preset deliberately leaves out *.bak and *.old, because many games use those extensions for their own save redundancy; add them yourself if yours don’t.

Exclusions also shape the source-size estimates on the Backup page and the change check that lets scheduled and Smart Backups skip unchanged games, so a file you exclude changing doesn’t trigger a new backup.

In the GUI, Settings → Exclusions holds only the global patterns and the Use Recommended Exclusions toggle. Per-game patterns, and per-game registry ignores, are edited from that game’s row on the Backup page: the Exclusions section for patterns, and the Included/Skipped toggle beside each registry key for ignores. Global registry ignores can only be set from the CLI:

Terminal window
savevault-cli exclusions # show everything
savevault-cli exclusions list --game "Cyberpunk 2077" # one game's section only
savevault-cli exclusions recommended --enable # turn on the preset
savevault-cli exclusions add "*.bak" # global
savevault-cli exclusions add "Screenshots/" --game "Cyberpunk 2077"
savevault-cli exclusions add "HKCU\Software\Foo\Telemetry" --registry
savevault-cli exclusions remove "*.bak"

Each game on the Backup page has a Files section showing exactly what the next backup would capture — the 9,000-file gameInstall case becomes a glance instead of post-backup archaeology. Unchecking a file adds an exact-path exclusion to that game’s per-game list (./slot1.sav for a file directly in a save location, or its relative path such as nested/slot2.sav for a nested one); it appears as a chip in the Exclusions editor immediately, and rechecking removes it. Each save location also has a root checkbox that includes or excludes every file under it at once, and shows a partial state when only some are included. A file excluded by a hand-written glob shows as unchecked-and-locked with the winning pattern, editable only in the Exclusions editor.

New files default to included, the only default that can’t lose save data. Because the checkboxes are the exclusion list, scheduled, CLI, wrap, and GUI backups always agree.

The CLI twin is backup-preview, which lists excluded files too with the pattern that excludes them:

Terminal window
savevault-cli backup-preview "Elden Ring"
savevault-cli backup --games "Elden Ring" --dry-run # same plan, plus the archive path

The Restore page shows an archive’s file tree with checkboxes, so you can bring back one save slot without touching the others. From the CLI, list the inventory and pass the in-archive paths. --file matches each path exactly as list-files prints it (either slash direction works) and is neither case-insensitive nor a glob:

Terminal window
savevault-cli list-files backup.zip
savevault-cli restore backup.zip --file "data/saves/appData/EldenRing/ER0000.sl2"

Registry entries aren’t selectable per key; include or skip them all with --include-registry / --no-include-registry.

The restore result says how much your choices held back: N skipped by file selection and N skipped by restore excludes in the app, and N file(s) not in selection (--file) and N file(s) excluded by restore-exclude glob on the CLI.

Skip destination paths matching a glob for this restore only:

Terminal window
savevault-cli restore backup.zip --exclude "*.ini" --exclude "screenshots/"
savevault-cli restore-batch ~/backups --exclude "*.ini"

Globs applied to every restore of a game, single or batch. Useful for a game whose config you never want overwritten, or a modded install whose loader files shouldn’t come back from an older archive. Always scoped to one game.

Terminal window
savevault-cli restore-excludes add "*.ini" --game "Skyrim"
savevault-cli restore-excludes add "SKSE/" --game "Skyrim"
savevault-cli restore-excludes list --game "Skyrim"
savevault-cli restore-excludes remove "SKSE/" --game "Skyrim"

Persistent restore excludes compose with --exclude and with per-file selection. In the GUI, they’re set in the Restore Excludes section of the Restore page’s detail panel for the selected game (separate from the Files tree, which drives per-file selection).

Independently of all of the above, every archive keeps saves and configs in separate trees. Restores copy back saves only by default (restore.include_mode, set under Settings → Restore); any single restore can override with --include configs or --include both. Scheduled backups include configs by default (schedule.include_configs).