Sincronização na nuvem
Syncthing, rclone, NFS, mantenha saves e ROMs sincronizados entre dispositivos
Três abordagens para manter o /storage do seu handheld sincronizado com outra máquina. Escolha a que melhor se encaixa no seu cenário.
Syncthing (peer-to-peer)
Ideal quando você tem um PC ou outro handheld e quer sincronização contínua e automática sem envolver uma conta na nuvem.
Configuração no handheld
- ES, Network Settings, Network Services, Enable Syncthing.
- Anote o IP do aparelho, que aparece em System Information.
- Veja a senha de root em System Settings, Security, Root password. De fábrica ela é
archr, então troque antes de expor a interface web.
Configuração no seu PC
Instale o Syncthing pelo gerenciador de pacotes da sua distro ou em syncthing.net.
Conectando os dois
Acesse http://<handheld-ip>:8384 no navegador do PC. A interface web escuta em todas as interfaces. Entre como root com a senha do passo anterior.
Na interface web do handheld:
- Add Remote Device, cole o Device ID do PC (visível na interface do Syncthing do PC em Actions, Show ID). Dispositivos na mesma LAN se descobrem automaticamente, caso contrário cole manualmente.
- Add Folder, dê um rótulo (ex.:
roms), caminho/storage/roms. Na aba Sharing, marque o PC.
No PC, aceite o dispositivo e a pasta recebidos. Escolha uma pasta local para espelhar. Pronto, a sincronização começa.
O que sincronizar
Tudo que vale sincronizar fica dentro de /storage/roms:
| Pasta | Conteúdo | Vale sincronizar |
|---|---|---|
/storage/roms/<sistema>/ | ROMs, e os saves de bateria ao lado delas | os saves sim, as ROMs só se houver espaço |
/storage/roms/savestates/<sistema>/ | Save-states | veja a ressalva abaixo |
/storage/roms/screenshots/ | Capturas de tela | sim |
/storage/.config/ | Configurações dos aplicativos | em geral não, são específicas do aparelho |
O RetroArch aqui roda com savefiles_in_content_dir ligado, então o save de bateria (.srm, .sav) é gravado ao lado da ROM, e não numa pasta central. Os save-states são a exceção: o setsettings.sh aponta o savestate_directory para /storage/roms/savestates/<sistema> antes de cada partida.
Save-states dependem da build exata do core. Se o PC e o handheld rodarem versões diferentes dos cores libretro, um state gravado em um pode não carregar no outro. Os saves de bateria não têm esse problema. Sincronize os saves à vontade e deixe os states para quando as versões dos cores estiverem alinhadas.
O Syncthing é interrompido enquanto um jogo está aberto e volta quando você sai, para não disputar CPU e acesso ao cartão com o emulador.
rclone (armazenamento na nuvem)
Para Google Drive / OneDrive / Dropbox / S3 / etc. O ArchR já vem com o rclone pré-configurado e com um wrapper em ES, Tools, Cloud Backup / Cloud Restore.
Configuração
Habilite o SSH
Configure seu provedor de nuvem
ssh root@archr.local
rclone configSiga os prompts; consulte a documentação dos providers do rclone para configuração OAuth headless, se necessário.
Edite o cloud_sync.conf
Padrão em /storage/.config/cloud_sync.conf. Chaves mais úteis:
| Chave | Padrão | Significado |
|---|---|---|
BACKUPPATH | /storage/roms | o que será copiado |
RESTOREPATH | /storage/roms | onde restaurar (diferente de BACKUPPATH para testar o restore com segurança) |
BACKUPFOLDER | /storage/roms/backup | arquivos de backup local |
SYNCPATH | /GAMES | caminho no remoto da nuvem |
BACKUPMETHOD | sync | sync espelha / copy adiciona sem apagar |
RESTOREMETHOD | copy | copy preserva o local existente / sync sobrescreve |
RCLONEOPTS | filtros e verbosidade | conforme as flags do rclone |
Execute um backup
ES, Tools, Cloud Backup. O mesmo menu tem Cloud Restore.
Logs
tail -f /var/log/cloud_sync.logRegras de filtro
/storage/.config/cloud_sync-rules.txt decide o que sobe. Os caminhos ali são relativos ao BACKUPPATH, ou seja, /savestates/** significa /storage/roms/savestates. As regras que vêm de fábrica incluem save-states, capturas de tela e as extensões de save mais comuns (.srm, .sav, .state*, .dsv*, .eep e .mpk do N64, memory cards de PSX, pastas de save do Dreamcast e do PPSSPP), e excluem as próprias ROMs junto com BIOS, capas, vídeos, manuais e arquivos compactados. O arquivo .defaults ao lado é o modelo original, então copie linhas de lá se quiser o comportamento inicial de volta.
NFS (servidor de arquivos na LAN)
Se você tem um NAS ou um PC Linux rodando um servidor NFS, dá para montar o share NFS por cima da pasta de jogos. As ROMs ficam no servidor; os saves ficam no handheld.
Crie o arquivo de mount
/storage/.nfs-mountUma única linha:
NFS_PATH=192.168.1.10:/volume1/retro_gamesO diretório exportado precisa conter uma pasta roms; é ela que entra no merge.
Monte
ES, Tools, Mount NFS. O compartilhamento é montado em /storage/games-external e então um overlay é montado em /storage/roms, com /storage/games-external/roms como camada inferior somente leitura e /storage/games-internal/roms como camada superior gravável. As leituras vêm do servidor e o que for escrito fica no cartão. O EmulationStation reinicia sozinho quando o overlay sobe.
Isso é ótimo para coleções grandes. Guarde o romset de 200 GB do MAME num NAS e tenha o handheld vendo tudo em /storage/roms/arcade.
Pegadinhas
- NFS sobre WiFi é sensível à perda de pacotes; espere picos de latência ocasionais quando o sinal do WiFi oscila.
- ROMs que precisam de leituras aleatórias rápidas (cenas pesadas de seek em ISO de PSP) ficam melhores quando o arquivo é local. Copie seus títulos mais jogados para
/storage/games-internal/roms/para usar o caminho local do overlay. - A montagem não é refeita sozinha no boot: rode o Mount NFS de novo depois de reiniciar.
- As opções de montagem são pensadas para um portátil (
soft, então um servidor inacessível devolve erro de I/O em vez de travar o console) e o script desiste em silêncio se o servidor não responder ao ping.