Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SteamCloud Backups

SteamCloud Backups scans local Steam userdata folders and creates ZIP backups of each game's remote save directory.

What It Does

  • Reads settings from config.yaml.
  • Scans Steam accounts under <steam_path>/userdata.
  • Finds game save folders that contain a remote directory.
  • Creates timestamped ZIP backups per game and Steam account.
  • Resolves game names via Steam Store API when possible.
  • Provides a Tkinter UI for scan, selection, backup, and settings updates.

Current Behavior

  • main.py starts the desktop UI (src.ui.run()).
  • Backups are stored under <backup_dir>/<steam_id>/.
  • ZIP filename format: <game_name>_<steam_id>_<YYYY.MM.DD_HH:MM>.zip
  • If game name lookup fails, filename uses Unknown application.
  • Every run creates new ZIPs; old backups are not pruned.
  • Scan is asynchronous (background thread), so the UI remains responsive while scanning.

Requirements

  • Python 3.9+
  • Installed Steam client with local userdata
  • Internet access (optional, only for game name lookup)

Python dependencies (from requirements.txt):

  • PyYAML==6.0.3
  • Requests==2.32.5

Installation

pip install -r requirements.txt

Configuration

Edit config.yaml:

backup_dir: D:/Backups/Steam
steam_path: C:/Program Files (x86)/Steam
keep_versions: 5

Config keys

  • backup_dir: Folder where ZIP files are written.
  • steam_path: Steam installation root (tool scans <steam_path>/userdata).
  • keep_versions: Currently not used by the code.

Usage

Run from project root:

python main.py

Alternative:

python src/ui.py

Example console output:

✔ Backed up Portal 2 (AppID: 620) (SteamID: 7656119xxxxxxxxxx)
✔ Backed up Unknown application (AppID: 12345) (SteamID: 7656119xxxxxxxxxx)

Project Structure

  • main.py: App entrypoint (launches UI).
  • src/config.py: Centralized config loading and validation.
  • src/config_reader.py: Reads YAML config.
  • src/steam_paths.py: Builds Steam userdata path.
  • src/scanner.py: Detects save folders by account/AppID.
  • src/steam_name_getter.py: Fetches game names from Steam API.
  • src/zipper.py: Creates ZIP archives.
  • src/ui.py: Tkinter UI (scan, select, backup, settings).

Notes and Limitations

  • Backup retention is not implemented (keep_versions is ignored).
  • No built-in validation for invalid steam_path or missing permissions.
  • API/network failures do not stop backup; they only affect displayed game names.

UI Features

  • Scan Saves: Scans accounts/games and fills a tree view.
  • Backup All: Backs up all discovered saves.
  • Backup Selected: Backs up checked games only.
  • Settings: Edit backup_dir, steam_path, and keep_versions in-app.
  • Progress bar, status text, and timestamped log panel.

License

See LICENSE.md.

About

Python app to extract steam cloud backup files from local steam userdata

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages