Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

steam-runtime-sniper creates var/tmp-XXXXXX folder that confuses backup tools #732

Open
Anonymous1157 opened this issue Dec 24, 2024 · 1 comment

Comments

@Anonymous1157
Copy link

Anonymous1157 commented Dec 24, 2024

Your system information

  • Steam Runtime Version: sniper_platform_0.20240916.101795
  • Distribution (e.g. Ubuntu 18.04): Gentoo ~amd64
  • Link to your full system information (Help -> Steam Runtime Diagnostics) in a Gist: https://gist.github.com/Anonymous1157/f733a83c09bb2625ed08876005f4cf0d
  • Have you checked for system updates?: Yes
  • What compatibility tool are you using?: Proton 9.0 (temporarily switched to Proton-GE in an attempt to remove steam-runtime-sniper but it did not let me, but also Proton is not relevant to the issue)
  • What versions are listed in steamapps/common/SteamLinuxRuntime/VERSIONS.txt? 0.20240806.0
  • What versions are listed in steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt? 0.20241118.108551
  • What versions are listed in steamapps/common/SteamLinuxRuntime_sniper/VERSIONS.txt? 0.20241118.108552

Please describe your issue in as much detail as possible:

I'm running Steam from the Flatpak.

Steam Runtime Sniper creates a folder Steam/ubuntu12_64/steam-runtime-sniper/var/tmp-XXXXXX in its file structure where the XXXXXX changes every time Steam launches. I tried looking for other reported issues about this folder and it's allegedly being hardlinked from somewhere else rather than unpacking the runtime again every launch, but I'm also far from the only person that's had a weird issue with this folder.

I use rsync to backup my home directory. If I have launched Steam at any time since the last backup, the tmp-XXXXXX folder will change its name. At backup time approximately one gigabyte of data at the remote server will be deleted and a presumably identical gigabyte of data will be copied again as if it were completely new files.

Is there a way to make Steam stop recreating/renaming this folder? I tried to get my friends to reproduce this problem and apparently this folder was not getting renamed for them. I don't know any details about their setup other than it's a different distro but they were also using a Flatpak.

Of course I can work around the problem by excluding this folder in my rsync command. That's fine. But I think this is a problem that should be solved at the runtime so that less technical users don't have to worry about it. I think it's reasonable to expect someone could want a one-click backup solution with no strange gotchas to work around.

Steps for reproducing this issue:

  1. Launch Steam
  2. Backup your home directory
  3. Close and relaunch Steam
  4. Backup your home directory again
  5. Watch your backup software delete Steam/ubuntu12_64/steam-runtime-sniper/var/tmp-XXXXXX and copy Steam/ubuntu12_64/steam-runtime-sniper/var/tmp-YYYYYY
  6. Repeat ad nauseum until your NAS' storage wears out
@smcv
Copy link
Contributor

smcv commented Jan 2, 2025

Steam Runtime Sniper creates a folder Steam/ubuntu12_64/steam-runtime-sniper/var/tmp-XXXXXX in its file structure where the XXXXXX changes every time Steam launches.

Yes.

it's allegedly being hardlinked from somewhere else rather than unpacking the runtime again every launch

That's 99% true. Directories, empty (0 byte) files and symlinks are newly created every time, but non-empty files are hard links to the corresponding version of the file as distributed with Steam (so the amount of disk space taken is trivially small: it's only metadata, no data).

Is there a way to make Steam stop recreating/renaming this folder?

No, there is not. In general it is technically necessary for it to have a unique name: when more than one game runs at the same time, or when the Steampipe depot gets updated while a game is running, the running game needs to be using an independent "view" of the runtime, so that its root filesystem will not unexpectedly disappear from under it and cause a crash.

(The copy under steam-runtime-sniper is used to run Steam itself rather than games, so it doesn't necessarily have that constraint; but fewer code paths mean fewer bugs, so it's mechanically the same as what's used to run the actual games.)

A Steam installation already contains a very large amount of data that comes from Steam's various CDNs and does not need to be backed up, and in particular none of the SteamLinuxRuntime_* and steam-runtime-* directories need to be backed up, so I would recommend adding wider exclusion rules than just var/.

One thing that we could usefully do to make many backup tools avoid this directory would be to create a var/CACHEDIR.TAG (for tar --exclude-caches and similar), although unfortunately rsync doesn't support that anyway. Or we could maybe create a var/.rsync-filter for rsync -F along the same principle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants