49 lines
1.4 KiB
Bash
Executable file
49 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
# Simple two way game-save sync
|
|
# NOTE: This will ALLWAYS replace the backups with local folders,
|
|
# even if they are empty folders
|
|
|
|
command -v xdg-user-dir &> /dev/null &&
|
|
DOCUMETS="$(xdg-user-dir DOCUMENTS)" ||
|
|
DOCUMETS=~/Documents
|
|
|
|
SAVES_DIR="$DOCUMETS/GameSaves/"
|
|
test -d "$SAVES_DIR" || exit 1
|
|
|
|
test_rsync(){
|
|
test -d "$1" && {
|
|
mkdir -p $(dirname "$2")
|
|
cp --recursive --no-target-directory --reflink=always "$1" "$2"
|
|
}
|
|
}
|
|
|
|
game_save(){
|
|
GAME_NAME="$1"; shift
|
|
INSTALL_DIR="${1/"~"/$HOME}/"; shift
|
|
|
|
BACKUP_DIR="$SAVES_DIR/$GAME_NAME/"
|
|
|
|
test_rsync "$INSTALL_DIR" "$BACKUP_DIR" ||
|
|
test_rsync "$BACKUP_DIR" "$INSTALL_DIR" ||
|
|
echo "Nothing to do for $GAME_NAME"
|
|
|
|
while test -n "$1"
|
|
do
|
|
find "$BACKUP_DIR" -name "$1" -exec rm -rf {} +
|
|
shift
|
|
done
|
|
}
|
|
|
|
game_save mindustry "~/.local/share/Mindustry" 'previews'
|
|
game_save minecraft "~/.minecraft/saves"
|
|
game_save factorio "~/Games/factorio" '_autosave*.zip' '*.sync-conflict-*' 'doc-html' 'temp' 'data' 'bin'
|
|
game_save cuphead "~/Games/cuphead/drive_c/users/$USER/Application Data/Cuphead"
|
|
game_save dusk "~/Games/dusk/game/saves"
|
|
game_save marioW "~/Games/super-mario-world/"
|
|
|
|
game_save hl1 "~/Games/HalfLife2Source/game/hl1/save/"
|
|
game_save hl2 "~/Games/HalfLife2Source/game/hl2/save/"
|
|
game_save hl2ep1 "~/Games/HalfLife2Source/game/episodic/save/"
|
|
game_save hl2ep2 "~/Games/HalfLife2Source/game/ep2/save/"
|
|
|