SkillAgentSearch skills...

SaveSync

A Tool for Syncing Game Saves that don't support Steam Cloud across PCs

Install / Use

/learn @Quietek/SaveSync
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SaveSync

Description

This is a tool to backup and sync Save Games and ROMs across multiple linux PCs, making it easier to keep your systems on the same save versions. It's primarily targeted towards Steam games that don't support Steam Cloud, but has built in functionality to backup cartridge ROM Game saves in your ROMs folder, as well as functionality to sync any non-Steam games you may have as well. This doesn't require more than one PC, and can also easily be used as a tool to simply backup your game saves for an OS reinstall or to move them to a new computer or just for peace of mind! This software also supports rolling back saves, so if you're ever worried about getting soft locked in a game or having a corrupted save file, you should always have the option to roll back your game save to an earlier version.

Features

  • Automatically back up saves for steam games based on information from PC Gaming Wiki.
  • Automatically back up emulator saves, bios, and firmware based on their default local or flatpak paths.
  • Keep saves in sync across multiple machines, even if they don't support steam cloud.
  • Keep ROM folders in sync across multiple machines.
  • Save version history.
  • Save Rollback/Restoration.
  • Manually specified non-Steam game save backups.
  • Automatic detection of non-Steam game saves across multiple clients after the first manual addition, including those installed to differing proton prefixes across multiple clients.

Disclaimers

This is beta software being developed by one person in their free time, bugs are expected. If you encounter a bug and are looking for help, please consider submitting a bug report or opening an issue on github. Many of these features have been minimally tested, so you may encounter issues where I haven't. Games that generate PC-specific save files are unsupported. Using this software in conjunction with games that are enabled for Steam Cloud may cause unexpected behavior.

Installation

A newly compiled appimage has been released, it is no longer recommended to directly invoke the python scripts in this repository. Instead simply download the AppImage from the releases page, then run:

$ mkdir SaveSync
    $ mv savesync.AppImage SaveSync/
$ cd SaveSync/
$ chmod +x savesync.AppImage
$ ./SaveSync.AppImage

To run a full system sync run:

$ ./SaveSync.AppImage --sync
    

To add a non-steam game to the SaveSync database:

$ ./SaveSync.AppImage --add 'title={ INSERT TITLE HERE }' 'path={ INSERT PATH TO SAVE FILE(s) HERE }'

To get a list of all known games in the database:

$ ./SaveSync.AppImage --list

To manually add or modify an undetected game path:

$ ./SaveSync.AppImage --add 'appid={ INSERT APPID HERE }' 'path={ INSERT PATH TO SAVE FILE(s) HERE }'
NOTE: replace the AppID with the gameID for non-steam games.

To use most other functions, run without command line arguments.

$ ./SaveSync.AppImage

Uninstallation

To uninstall simply delete the SaveSync folder and the configuration file/directory. This will also delete all your backed up saves, so make sure you've gotten any you need out of the SaveSync folder before deleting.

$ rm -r ./SaveSync
$ rm -r ~/.config/SaveSync

If you use a systemd service to run your syncs, you will need to disable it and remove the relevant .service file.

$ systemctl --user disable SaveSyncOnMount.service
$ rm ~/.config/systemd/SaveSyncOnMount.service

Supported Emulators

This is a list of emulators that support automatic save, bios, and firmware detection and backup based on their default linux and flatpak save locations.

  • zsnes
  • mupen64plus
  • Duckstation
  • PCSX2
  • RPCS3 [No firmware/bios sync]
  • ryujinx
  • yuzu

If you know of another commonly used emulator, especially if it's for a system that isn't covered by these, consider submitting an issue/bug report with any information you can provide about it's default save game locations.

F.A.Q.

Why should I use this?

Many games on Steam still do not support steam cloud saves, meaning that there's no recourse if you end up losing access to that game's save data from an OS reinstall, a lost device, data corruption, or soft locking yourself in a game. While this is mostly relevant to older games, there are still some AA and AAA newer games that don't release with cloud save support, some notable games that don't support cloud saves in my own library include Dark Souls 2 and 3, the Quarry, Sleeping Dogs, and a variety of retro games. This software is here to make keeping your games that don't support steam cloud in sync with each other across multiple linux computers, store multiple backups of your game saves, and keep your game saves for games from outside of Steam backed up/synced as well.

Do I need multiple PCs to get use out of this?

Nope! SaveSync can work great as a simple save backup tool, and can absolutely be run on only one computer if you want to keep backups of your saves in case of an OS reinstall, a drive failure, or any number of other reasons. It also offers save rollback, which may come in handy if you find yourself soft locked in a game or with a corrupted save file on your system.

Where am I intended to put the SaveSync folder?

The SaveSync folder is intended to be placed on a removable drive such as a flash drive or an SD card. I personally have been keeping it on my Steam Deck's sd card. It can be placed and used anywhere though, so you can place it on a NAS or even just somewhere generic on your PC's SSD/HDD.

Is this software compatible with Windows?

No, and it probably won't be for a while, if ever. My priority is on compatibility with the Steam Deck and general Linux PCs, since those are what I actually use on a daily basis, and many use cases for this with the Steam Deck in particular would have you placing SaveSync on a drive with a filesystem format that windows doesn't support.

Is there a Decky plugin for this?

Not currently, I have considered making one, but the last time I took a look, much of decky was still undocumented. Also, until I feel better about the state of testing and bugs, I want this project to prioritize general linux compatibility rather than focusing on steam deck specific features. I may revisit this later though.

Where are the backed up files located?

  • Backed up Steam saves will be located at ./SteamSaves/[AppID]/[Timestamp]
  • Backed up non-Steam saves will be located at ./NonSteamSaves/[GameID]/[Timestamp]
  • Backed up ROM saves will be located at ./ROMSaves/[Filename]/Timestamp
  • Backed up ROMs will be located at ./ROMs/

What's the difference between all the different save types?

  • A Steam save is always from an installed Steam game. This does not include games that are added to steam as non-Steam games or games installed directly into a proton directory.
  • A Non-Steam save is any save file that you manually specify that isn't installed through steam. This could be the path to an emulator's save data for example, or really any game you're willing to manually locate the save data for that you don't own on Steam. This includes games that were installed into a proton directory or added as non-Steam games.
  • A ROM Save file is a save file that is located in the same directory as the ROM itself. This is generally specific to cartridge based systems that stored their game saves on the cartridge. These are distinguished from normal ROMs by their save extensions. Currently supported ROM Save extensions include .sav, .eep, .fla, .srm, and .ss*. if you know of a file extension that should be treated as a save instead of a ROM, please consider letting me know on GitHub.

What's an AppID and a GameID and how do I find them?

The AppID is Steam's way of keeping track of which games are which within the steam database. It's a numerical value that won't be changed and will always refer to the same game. A GameID is a custom value created specifically for your instance of SaveSync to track your non-Steam saves.

$ ./SaveSync.AppImage --list

If you need to reference an AppID that isn't registered to the SaveSync database, you're best bet is to search for it here: https://steamdb.info/apps/ or you can get it from the url of the steam store page, which has it's urls formatted like this: https://store.steampowered.com/app/[APPID]/[Title]

How do I manually add an undetected Steam Game?

The interactive Database Manager will help you with that, specifically use option 8 from the main menu, and type the AppID of the game you want to manually specify a path for.

I'm using the interactive database manager and it's making references to prefixes and suffixes, what are they?

The prefix is the path before a potential split in the filepath, while the suffixes are the paths after it. Any game that has a unique UserID/Profile in the path will be treated as the prefix being the portion before the UserID, and the suffix being the portion after it. New UserIDs should be automatically detected and backed up. If a game doesn't have a UserID associated with it, the prefix will be the full filepath.

An example to demonstrate can be seen with the game Heroes of Might and Magic V. This game allows users to create individually create profiles, each of which has it's own saves, and the paths to get to each profiles saves would be something like:

  1. ~/.local/steam/steamapps/compatdata/15170/pfx/drive_c/users/steamuser/Documents/My Games/Heroes of Might and Magic V/Profiles/USER1/Saves/
  2. ~/.local/steam/steamapps/compatdata/15170/pfx/drive_c/users/steamuser/Documents/My Games/Heroes of Might and Magic V/Profiles/USER2/Saves/

So, we take the filepath from before where it splits as the prefix, and the parts after as our suffixes. So our values would look like:

Prefix:
  • ~/.local/steam/steamapps/compatdata/15170/pfx/drive_c/users/steamuser/Documents/My Games/Heroes of Might and Magic V/Profiles/
Suffixes:
  • USER1/Saves/

Related Skills

View on GitHub
GitHub Stars8
CategoryCustomer
Updated9d ago
Forks0

Languages

Python

Security Score

85/100

Audited on Mar 27, 2026

No findings