Replies: 12 comments
-
So ... I almost have it working. The shell script runs fine, synthing does it's job. BUT: Restoring does not work IF the game is installed in a different folder. I tried Dead Cells which is stored here:
Is there any easy way to handle this in ludusavi? |
Beta Was this translation helpful? Give feedback.
-
I think backup redirects (#72) would make this easier to pull off. Right now, you would need each system to store its own backup folder, set up inverse restoration redirects on each system, and then restore from whichever system's backup is newer. It should work, but it's not ideal. Since you're using a script, you could implement logic like this:
Once backup redirects are implemented, then both systems could share a backup folder (as long as they use the same OS or otherwise have saves that map nicely), so you wouldn't have to worry about which one has the latest backup for the game. |
Beta Was this translation helpful? Give feedback.
-
Redirects sound about right, if I understand correctly that it is a concept ludusavi could provide. Sharing the folder itself can then be left to the user, either use syncthing or a cloud drive or whatever keeps the backup folder accessible on all machines. Which changes would ludusavi need in order to have redirects? Maybe some additions to the mapping.yaml file which separate the root folder from the install_dir. And then a detection mechanism which is able to find the game in a different root during restoration? |
Beta Was this translation helpful? Give feedback.
-
Restoration redirects are already available, so backup redirects would work the same way. No need to modify mapping.yaml; it just needs to generically replace text in a target file path (code). What you can do right now, using only restoration redirects:
What you could do in the future, with both kinds of redirects:
|
Beta Was this translation helpful? Give feedback.
-
Very nice, I obviously missed that feature and it does the trick! At least for ''Dead Cells" it works with a single, synchronized backup folder. Config excerpts: On deck: backup:
path: /home/deck/ludusavi-backup
restore:
path: /home/deck/ludusavi-backup
ignoredGames: []
recentGames: []
redirects:
- source: /home/MYUSER/Games
target: /run/media/mmcblk0p1/gog On PC: backup:
path: ~/Games/00-savegames/0-ludusavi-backup
restore:
path: ~/Games/00-savegames/0-ludusavi-backup
redirects:
- source: /run/media/mmcblk0p1/gog
target: /home/MYUSER/Games Still .... this is not very easy to set up, because I need to add a mapping for each root. This includes %APPDATA%, $HOME, ... Also it works for a 2 device setting. Having three devices with three different root requires much more mappings. I would highly appreciate having the redirects in both ways. I'd love to help, but I am way to new to rust to figure it out in a time efficient manner. Can you give me some hints so that I can work on a patch? |
Beta Was this translation helpful? Give feedback.
-
BTW: restoring with a redirect complains about |
Beta Was this translation helpful? Give feedback.
-
Whoops, thanks for finding that. I'll include that in 0.13.1 shortly.
No worries! It might be a bit more complicated since it will touch various parts of the app (e.g., displaying the original path, adding the redirect editor, ensuring relevant paths are wrapped in the handling). I'll see if I can work on this within the next week or so, but if not, then I'll try to write something up. Thank you for your interest in contributing :) |
Beta Was this translation helpful? Give feedback.
-
@sluedecke If you're interested in trying it out, I've implemented #72 and updated master. The config format for redirects has changed (and they're on the "other" screen now), which is automatically adjusted when upgrading, but won't be reverted when downgrading, so you may want to back up your config first. You can do something like this now: DesktopDeck |
Beta Was this translation helpful? Give feedback.
-
I like the new bidirectional mappings, they work fine for me. Thanks for adding them, it really helps keeping things tidy! |
Beta Was this translation helpful? Give feedback.
-
As of 2022-10-26 this is not working properly. I tested it by accident with a non-flatpak installation of heroic. Using heroic the flatpak and thus most common way does not allow one to run ludusavi from the wrapper script. Apparently the flatpak runtime used in heroic is missing libbz2 which is needed by ludusavi. |
Beta Was this translation helpful? Give feedback.
-
Do you have bzip2 compression enabled for backups? I wonder if it's failing immediately when Ludusavi starts or only when it tries to compress a backup. |
Beta Was this translation helpful? Give feedback.
-
It does not start, not even when using update: probably an issue for heroic to include this library in their flatpak runtime. The game "Dead Cells" is missing libbsd for example: Heroic-Games-Launcher/HeroicGamesLauncher#1829 |
Beta Was this translation helpful? Give feedback.
-
Not working as of 2022-10-26, see #129 (comment)
This is more of a writeup / howto and not a bug report.
Motivation
I have 200+ games on GOG and I've been using Linux exclusively for many, many years Since I now own a steam deck, backing up save games is just the first - but important - step towards a missing feature GOG does not provide yet: Linux cloud saves. While there are approaches to use the GOG api for that, I prefer to use my own devices. The approach I take is described below.
I tested this approach successfully with:
Here be dragons
Use it at your own risk. It will eat your save games, including the one you invested so much love and so many hours! So please make a backup first!
This is work in progress
There is no error handling yet
Script below works with GOG games only
if you save on pc and deck without synchronisation (= while offline), conflicts will arise
Setup
Wrapper script
ludusavi-cloud.sh
/home/deck/bin/ludusavi-cloud.sh
/home/MYUSER/bin/ludusavi-cloud.sh
Game Launcher which supports a wrapper script (e.g. Heroic)
Heroic is an excellent choice and the following will assume you use it, but any game launcher supporting a wrapper script is fine.
/home/deck/Games
/home/deck/bin/ludusavi-cloud.sh
as a wrapper to your game/home/MYUSER/Games
/home/MYUSER/bin/ludusavi-cloud.sh
as a wrapper to your gameLudusavi
/home/deck/ludusavi-backup
ludusavi
/home/deck/ludusavi-backup
/home/MYUSER/Games
, target:/home/deck/Games
/home/MYUSER
, target:/home/deck
.ludusavi
/home/MYUSER/ludusavi-backup
as backup path and for the redirects map source:/home/deck/Games
to target:/home/MYUSER/Games
and source:/home/deck
, target:/home/MYUSER
TBD Synchronisation of backup folder (e.g. Syncthing)
The script
Beta Was this translation helpful? Give feedback.
All reactions