Persistindo Saves de Jogos com Repositórios GitHub
Um guia prático mostrando como automatizar o backup dos saves e save states do RetroArch no R36S usando Git e GitHub. Inclui passos para configurar SSH, criar repositórios, e agendar commits automáticos com cron.
R36S – Persistindo Saves de Jogos com Repositórios GitHub
Recentemente comprei um emulador portátil R36S e, depois de apagar tudo e instalar uma nova distro do zero, minha primeira ação foi garantir que os saves dos jogos fossem persistidos.
Por quê?
Porque, ao longo dos anos, perder saves de jogos foi uma das experiências mais frustrantes para mim. Analisei algumas formas de implementar soluções de armazenamento em nuvem — como Dropbox, Google Drive e OneDrive — mas, depois de um tempo, percebi que repositórios Git pareciam ser a melhor opção.
Um repositório Git permite que esses pequenos arquivos sejam armazenados com seus diferentes históricos de versões ao longo do tempo.
Não acredito que o repositório vá crescer muito, e não pretendo abusar dele, então vou usar o GitHub como repositório remoto.
Se ele ficar muito grande, posso trocar o remoto ou ajustar minha estratégia mais tarde.
Configurando as Pastas de Save do RetroArch
A primeira coisa que fiz foi alterar o diretório dos arquivos de save, saindo das pastas individuais de cada ROM e apontando para a pasta global /home/ark/.config/retroarch/saves/

Abra o RetroArch e vá até o menu Settings > Directory > Save Files

Faça o mesmo para Save States

Não se esqueça de salvar suas configurações antes de sair.
Em seguida, criei dois repositórios privados no GitHub:
k36-saves e k36-states.

Criando as Chaves SSH
Depois de ativar o Wi-Fi ou LAN no seu R36S, faça login por SSH usando o método que preferir (SSH, SSH via WSL, PuTTY etc.).
No meu caso, usei o seguinte comando:
ssh -o PreferredAuthentications=password ark@192.168.0.12
Quando solicitado, usei a senha padrão: ark
Agora podemos criar as chaves SSH:
ssh-keygen -t rsa
Isso vai criar um par de chaves pública/privada na pasta home do usuário.
Copie o conteúdo do arquivo /home/ark/.ssh/id_rsa.pub e cole em Settings > SSH and GPG Keys da sua conta no GitHub.
Se você tiver outros repositórios, recomendo criar uma conta separada, já que essa chave dá acesso total de escrita aos seus repositórios.
Criando os Repositórios Locais
Agora, vamos até a pasta de saves mencionada e inicializar o repositório lá:
cd /home/ark/.config/retroarch/saves/
git init
git remote add origin git@github.com:viniciusrezende/k36-saves.git
git checkout -b main
Substitua a URL remota pela do seu próprio repositório.
Repita o mesmo processo para a pasta states.
Enquanto estamos aqui, vamos configurar as informações globais do usuário Git:
git config --global user.email "ark@viniciusrezende.com.br"
git config --global user.name "ArkOS k36"
Criando o Script de Auto-Commit / Auto-Push
Agora, vamos criar o script na pasta home:
touch ~/pushgit.sh
chmod +x ~/pushgit.sh
nano ~/pushgit.sh
Em seguida, cole o conteúdo abaixo:
set -e
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
cd /home/ark/.config/retroarch/saves
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
exit 1
fi
if [[ -n "$(git status --porcelain)" ]]; then
git add -A
git commit -m "Auto commit: $timestamp"
fi
git push origin main
cd /home/ark/.config/retroarch/states
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
exit 1
fi
if [[ -n "$(git status --porcelain)" ]]; then
git add -A
git commit -m "Auto commit: $timestamp"
fi
git push origin main
Adicionando o Evento no Cron
Por fim, abra o crontab com o comando crontab -e e adicione a seguinte linha:
*/5 * * * * bash /home/ark/pushgit.sh
Isso fará com que o script seja executado a cada 5 minutos, enviando automaticamente as alterações para o GitHub.
Extra
Enquanto escrevia este tutorial, tive alguns problemas para tirar screenshots do R36S.
Para quem tiver curiosidade, usei o seguinte comando:
sudo ffmpeg -f kmsgrab -i - -frames:v 1 -vf "hwdownload,format=bgr0" screenshot.png