Sincronização P2P de arquivos entre máquinas Gentoo com Syncthing (Sem nuvem)
Dica publicada em Linux / Redes
Sincronização P2P de arquivos entre máquinas Gentoo com Syncthing (Sem nuvem)
Introdução
Se você possui mais de uma máquina (como um desktop principal e um servidor doméstico ou notebook) e precisa manter pastas específicas idênticas em ambas — como seus scripts pessoais, saves de jogos (Doom, por exemplo) ou documentos de RPG — oSyncthing pode ajudar.Diferente do Dropbox ou Google Drive, ele não envia seus dados para terceiros. A sincronização ocorre diretamente de dispositivo para dispositivo (P2P) na sua rede local, garantindo privacidade total e velocidade máxima.
Nesta dica, vou mostrar como configurar o Syncthing no Gentoo usando Systemd, focando na sincronização de pastas na
/home do usuário.1. Instalação (Em ambas as máquinas)
Como estamos no Gentoo, o processo é via Portage. Execute o comando abaixo nas duas máquinas que você deseja conectar:sudo emerge -av net-p2p/syncthing
2. Rodando como Usuário
Muitos tutoriais ensinam a rodar o serviço como root, o que causa uma enorme dor de cabeça com permissões de arquivos na sua pasta pessoal. O jeito correto ("Gentoo way") para sincronizar seus arquivos pessoais é rodar o serviço no nível de usuário.Não use
sudo aqui. Logado com seu usuário comum (ex: xerxes), ative o serviço:systemctl --user enable --now syncthing
Isso garante que o Syncthing tenha exatamente as mesmas permissões que você, evitando que arquivos fiquem "trancados" como root.
3. Acessando a Interface e Criando Senha
O Syncthing não tem uma janela de aplicativo nativa; ele roda no navegador. Abra seu browser e acesse:- Endereço: http://127.0.0.1:8384
Logo no primeiro acesso, ele vai avisar que a interface está desprotegida.
1. Vá em Ações (Canto superior direito) > Configurações.
2. Na aba GUI, defina um Usuário e Senha.
3. Salve. A página irá recarregar pedindo login. Faça isso nas duas máquinas.
4. Conectando as Máquinas
Para que sincronia aconteça, um PC precisa conhecer o outro.1. Na Máquina A, vá em Ações > Mostrar ID. Copie o código longo alfanumérico.
2. Na Máquina B, clique no botão "Adicionar Dispositivo" (canto inferior direito).
3. Cole o ID da Máquina A. Na aba "Avançado", você pode dar um nome amigável (ex: "Servidor Gentoo"). Salve.
4. Volte para a Máquina A. Uma notificação amarela aparecerá no topo: "O dispositivo X quer se conectar". Clique em Adicionar.
Agora elas estão pareadas!
5. Sincronizando Pastas
Vamos supor que você queira sincronizar sua pasta de scripts (~/scripts) e seus jogos (~/doom).Na máquina onde os arquivos já existem:
1. Clique em "Adicionar Pasta".
2. Rótulo da pasta: Dê um nome (ex:
Scripts).
3. Caminho da pasta: O caminho real no disco (ex:
/home/seu_usuario/scripts).
4. Aba Compartilhamento:. Marque a caixa de seleção da outra máquina que você pareou no passo anterior.
5. Clique em Salvar.
Vá até a outra máquina. Uma notificação aparecerá: "O dispositivo X quer compartilhar a pasta 'Scripts'". Clique em Adicionar, confirme o caminho onde deseja salvar e pronto!
Conclusão
A partir de agora, qualquer alteração, novo script criado ou save game salvo em uma máquina será replicado instantaneamente para a outra via rede local. Se você desligar uma, assim que ela ligar novamente, o Syncthing detecta as mudanças e atualiza tudo automaticamente.Simples, seguro e sem depender da nuvem de ninguém.
Obs.: se você tentar sincronizar "/home/usuario" inteira "cegamente", você vai sincronizar também os arquivos ocultos de configuração. Isso pode quebrar seu sistema. Em vez de apontar para "/home/usuario" (a raiz), crie pastas compartilhadas específicas dentro do Syncthing.
Duvidas:
No seu exemplo com dois Hosts, o sync e bi-direcional ? ou seja o A -> B e do B -> A ?
Se tiver mais hosts, A.B, C ? funciona também de todos para todos ? E como é conflito de dados se ocorrer ?
#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#