Troubleshooting
🛠 Troubleshooting — Soluções rápidas
Abaixo estão problemas comuns, causas prováveis e como coletar informações para depuração.
Falha na conexão SSH
Sintoma: Falha na conexão SSH ou timeout.
- Verifique que a chave e o usuário estejam corretos:
ssh -i /caminho/para/chave -v user@host - Mensagens
Permission deniedindicam problema na chave ou no usuário. - Certifique-se das permissões da chave:
chmod 600 /caminho/para/chave.
rsync não está instalado / erros do rsync
Sintoma: mensagem dizendo que rsync não está disponível no remoto ou local.
- Instale no servidor remoto:
ssh user@host sudo apt-get install rsync(ouyum/dnfconforme distro). - Para depurar uma transferência, rode o
rsynccom--dry-run -vv --statspara ver o que seria transferido:rsync -avz --dry-run --progress src/ user@host:/dest/
Erro ao aplicar permissões remotas (sudo)
Sintoma: falha ao executar chown/chmod remotamente.
- Teste o comando manualmente via SSH para ver a saída real:
ssh -i /caminho/para/chave user@host "sudo chown -R :group /var/www && sudo find /var/www -type f -exec chmod 664 {} +" - Verifique
/tmp/last_logs.logno remoto (o script escreve logs de comando remoto ali):ssh user@host "sudo cat /tmp/last_logs.log" - Considere restringir sudoers para permitir apenas os comandos necessários (veja docs/permissions.md).
inotifywait não instalado ou limite de watches
Sintoma: watch não detecta mudanças ou informa que inotifywait não está disponível.
- Instale localmente:
sudo apt-get install inotify-tools. - Se houver muitas pastas, aumente o limite de watches:
sudo sysctl fs.inotify.max_user_watches=524288 # para persistir, adicione em /etc/sysctl.conf
Exclusões com padrões falhando
Sintoma: arquivos que deveriam ser excluídos não são ou padrões são expandidos localmente.
- Use
--ignorecom padrões corretos:.git,node_modules,*.log. - O script já trata exclusões usando arrays (evita globbing local). Para testar, rode com
--sync --verbosee verifique o que foi transferido.
Logs / como coletar evidências
- Logs locais:
./logs/sync.log(usetail -f logs/sync.log). - Logs remotos temporários:
/tmp/last_logs.log(conteúdo do último comando sudo remoto). - Para relatórios de bugs, inclua:
- Saída de
sync-dev --check - As últimas 50 linhas de
logs/sync.log - Saída
ssh -ve/tmp/last_logs.logdo remoto
- Saída de
Permissões do arquivo de configuração/estado
- O arquivo de estado é salvo em
~/.server-sync.infcomchmod 600. - O template criado por
sync-dev --inittambém é ajustado parachmod 600por padrão.
Performance / tempo de debounce
- Ajuste
DEBOUNCE_TIMEno.sync-config.inipara evitar sincronizações muito frequentes em projetos com muitas alterações.
Se o problema persistir, abra uma issue no repositório com as informações acima e, se possível, um --dry-run e as saídas de log para diagnóstico rápido.