Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

steamCloudSaveDownloader

MIT License Check and Build Publish PyPi GitHub Release Docker Hub

Download/Backup Saves on Steam Cloud

💻User friendly (GUI) version now availible

[!IMPORTANT] A critical security issue has been patched in v0.0.83. Please make sure you have updated to this version or later. Also, make sure to delete session.sb and re-generate (re-auth) it.

:warning: DISCLAIMER

  • This program is not affiliated with Valve or Steam. Steam is a trademark of Valve Corporation.
  • Even though this program is thoroughly tested and theoretically does not violate EULA. This program does not come with warranty and use at your own risk. More of this on Rate Limit Section

Description

For supported games, Steam will automatically upload game saves to the cloud. This is intended for seamless playing across multiple devices but NOT as a form of backup. Assume your game save is corrupted by the game itself or you perform something cannot be undone. Once you close the game Steam will automatically uploads newest(corrupted) game saves to the cloud. That is basically game over if you haven't backup your save or unplug your Internet cord before you close the game. This is when steamCloudSaveDownloader(abbreviated as scsd) come to the rescue.

You can view and download your save files stored on Steam cloud here. This program automatically crawls the webpages and download if the files are outdated. A number of copies are kept locally in case something goes wrong. You can rollback your saves whenever anything goes wrong.

:warning: Limitation

  • If the game does not support Steam Cloud then the file cannot be backuped. You should look for alternatives like GameSave Manager
  • File will be uploaded to Steam Cloud after you close the game. If the game save modification happens between a long game session without closing the game. Your last save point would be the last save uploaded to Steam Cloud and downloaded by scsd.
  • You might want to increase the frequency of scsd run if you have multiple short gaming session. Please be aware of Rate Limit and set an acceptable frequency in this case.

Installation

This program is available on PyPI. All you have to do is install Python and run.

pip install scsd

Linux and Windows executable can also be found on the release page

Usage

Simply run scsd -a <username> to login to Steam. Then run scsd to start downloading saves. The saves for each game will be stored within the data directory with the corresponding AppID. If rotation is specified the old version of the file will have suffix .scsd_<version_num> to the corresponding file name.

Please refer to Scheduled Run if you want to run scsd automatically at given time.

For more detail usages please reference Command Arguments and Config File

Authentication

By running scsd -a <username> scsd save a session file with NO password within. This session last approximately about a month if your IP has not been changed. Once expired scsd will notify you if the notification options are given.

Notification

Right now scsd supports the following notification system whenever scsd finishes the download process or encountered error. Please refer to Config File for setting options

  • Discord
  • Script

Scheduled Run

The saves will be download and saved locally only if you execute scsd. scsd relies on external scheduler to run automatically.

  • For Windows users you can run it with Task Scheduler
  • For Linux/Mac users you can run it with cron

Rate Limit

Even though this program does not use Steam API directly. This program still complies to Steam maximum API calls limit (100,000) per day. This program will limit itself to 85% of the usage (which is 85,000). Once exceed the aforementioned limit, the program will stop sending requests to Steam.

In addition to that, the program will wait for a random amount of time (a few seconds) between each request. This will significantly lower chance for the program to be identified as DDoS attack and potentially ban your account. As a trade off, it might took awhile for all your cloud saves to be downloaded.

Docker

Docker image is available at Docker Hub. It has built in scheduler and will run scsd automatically at given time (At minute 39 past every 2nd hour).

Below is the minimal example for running within docker. This will bind mount the data directory and run the authentication process.

mkdir data
docker run -d --name scsd -v ./data:/data -v /etc/localtime:/etc/localtime:ro hhhhojeihsu/scsd:latest
docker exec -it scsd scsd_auth <username>

Volumes

  • /data: Where the save files and program related files are located
  • /config: Where the configuration file is stored.
    • scsd will look for scsd.conf within this directory and take it as config file.
    • If not, scsd will create a config file named scsd.conf.default. Which takes precedence after scsd.conf, if co-exist.

Environment Variables

Name Purpose Default
PUID Effective UID for scsd to run with 1000
PGID Effective GID for scsd to run with 1000
CRON_VAR Cron syntax for scheduled run 39 */2 * * *
AUTO_UPDATE Set to true to enable scsd auto update false

Special Thanks

  • maer for beta test

Metadata

Release files for scsd 0.1.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scsd 0.1.0b1
File Size Uploaded
scsd-0.1.0b1.tar.gz 35.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scsd 0.1.0b1
File Interpreter ABI Platform
scsd-0.1.0b1-py3-none-any.whl Python 3 none any Details

Total release size: 60.9 kB

Release files / scsd-0.1.0b1.tar.gz

Download URL scsd-0.1.0b1.tar.gz
Size 35.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f7319ff108a8fea11a7e7204501997a239b90be89ca65beb94ff3aff0f0c1569
BLAKE2b-256 checksum
How to use checksums
c1b029491f54972bedaa03d8f962cc943bae0d2ee0667db8c3e1ad0aeed06b40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / scsd-0.1.0b1-py3-none-any.whl

Download URL scsd-0.1.0b1-py3-none-any.whl
Size 25.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0c24851eea22088ee615dd8b844668cd98f77788f1ebdb3564582f6d0313fd4
BLAKE2b-256 checksum
How to use checksums
59458afb1222bae450a2d7f85cf49cf6a20bbb2b51fffc7604369c81f50aecb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.0

2 release files

This release

0.1.0b1 This release

2 release files

0.0.83

2 release files

0.0.82

2 release files

0.0.81

2 release files

0.0.79

2 release files

0.0.78

2 release files

0.0.76

2 release files

0.0.74

2 release files

0.0.73

2 release files

0.0.72

2 release files

0.0.71

2 release files

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.61

2 release files

0.0.60

2 release files

0.0.59

2 release files

0.0.58

2 release files

0.0.57

2 release files

0.0.55

2 release files

0.0.54

2 release files

0.0.51

2 release files

0.0.50

2 release files

0.0.49

2 release files

0.0.48

2 release files

0.0.47

2 release files

0.0.46

2 release files

0.0.45

2 release files

0.0.44

2 release files

0.0.23

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.17

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page