Sincronizando arquivos entre servidores com rsync via SSH
Olá! Eu sou a Sensei da GeHost, e hoje vamos falar sobre uma ferramenta poderosa para quem já tem um pouco mais de intimidade com o terminal: o rsync. Se você precisa copiar ou sincronizar arquivos entre dois servidores (ou entre seu computador e um servidor) de forma rápida e segura, o rsync é o parceiro ideal. Vamos entender juntos como ele funciona, com calma e sem pressa.
O que é o rsync e por que ele é tão útil?
O rsync (de "remote sync") é um utilitário que copia arquivos e pastas entre dois locais, comparando o que já existe no destino e transferindo apenas as diferenças. Isso significa que, se você já copiou 10 GB de arquivos ontem e hoje só mudou um arquivo pequeno, o rsync vai enviar somente esse arquivo — não tudo de novo. Isso economiza tempo, banda e paciência!
Quando combinamos o rsync com o SSH (o protocolo seguro de acesso remoto), toda a transferência acontece de forma criptografada, ou seja, ninguém no meio do caminho consegue "espiar" seus dados.
💡 Dica da Sensei: pense no rsync como um "espelho inteligente" entre duas pastas. Ele nunca copia o que já está igual — só o que mudou.
Antes de começar: o que você precisa ter em mãos
- Acesso via SSH ao servidor (usuário, senha ou chave, e a porta de conexão). Se você não tiver esses dados ou não souber se seu plano permite acesso SSH, consulte o painel do cliente em painel.gehost.com.br ou fale com o nosso suporte — eles vão te orientar certinho.
- Um terminal para digitar os comandos: no Linux e macOS já vem pronto; no Windows, você pode usar o PowerShell mais recente, o WSL (Subsistema Windows para Linux) ou um programa como o Git Bash.
- Saber exatamente de qual pasta para qual pasta você quer copiar os arquivos. Ter isso claro evita erros bobos!
Passo a passo: usando o rsync via SSH
1. Testando a conexão SSH primeiro
Antes de sincronizar qualquer coisa, é uma boa prática confirmar que você consegue acessar o servidor normalmente por SSH. Isso evita sustos no meio do processo.
- Abra o terminal.
- Digite o comando de acesso, substituindo pelos seus dados reais:
ssh usuario@seu-servidor.com -p PORTA
Se a conexão pedir a senha (ou usar sua chave automaticamente) e você entrar sem erros, ótimo — está tudo pronto para o próximo passo. Se aparecer algum erro de conexão recusada ou "permission denied", volte ao painel ou fale com o suporte para confirmar usuário, senha e porta corretos.
2. Montando o comando básico do rsync
A estrutura geral de um comando rsync via SSH é:
rsync -avz -e "ssh -p PORTA" /caminho/origem/ usuario@servidor:/caminho/destino/
Vamos entender cada parte com calma:
- -a ("archive"): mantém permissões, datas e a estrutura das pastas exatamente como está na origem.
- -v ("verbose"): mostra na tela o que está sendo copiado, para você acompanhar o processo.
- -z ("compress"): comprime os dados durante o envio, deixando a transferência mais rápida.
- -e "ssh -p PORTA": diz ao rsync para usar o SSH como "transporte seguro", informando a porta correta caso ela não seja a padrão.
- /caminho/origem/: a pasta de onde os arquivos vêm (repare na barra "/" no final — ela é importante, veja o próximo tópico).
- usuario@servidor:/caminho/destino/: para onde os arquivos vão.
⚠️ Atenção com a barra final! Se você colocar "/" no final da pasta de origem (ex:/minha-pasta/), o rsync copia o conteúdo dela para dentro do destino. Se você não colocar a barra (ex:/minha-pasta), ele copia a pasta inteira para dentro do destino. Essa diferença pequena muda o resultado inteiro — sempre confira antes de rodar!
3. Um exemplo prático
Digamos que você quer copiar os arquivos de um site que está na pasta meu_site do seu computador para a pasta public_html do servidor. O comando ficaria assim:
rsync -avz -e "ssh -p 22" ./meu_site/ usuario@servidor:/home/usuario/public_html/
Ao rodar, o terminal vai listar cada arquivo enviado. No final, aparece um resumo com o total de dados transferidos. Simples assim!
4. Fazendo um "teste seco" antes de sincronizar de verdade
Se você quer ver o que aconteceria sem realmente mover nenhum arquivo ainda, use a opção --dry-run:
rsync -avz --dry-run -e "ssh -p PORTA" /caminho/origem/ usuario@servidor:/caminho/destino/
Essa é uma das dicas favoritas da Sensei: rodar sempre com --dry-run primeiro é uma forma segura de conferir o que será enviado, alterado ou apagado antes de confirmar de verdade.
5. Sincronizando e removendo arquivos que não existem mais na origem
Por padrão, o rsync não apaga nada no destino — ele só copia e atualiza. Se você quiser que o destino fique idêntico à origem (inclusive apagando arquivos que já não existem mais na origem), use a opção --delete:
rsync -avz --delete -e "ssh -p PORTA" /caminho/origem/ usuario@servidor:/caminho/destino/
🚨 Cuidado redobrado com o --delete! Essa opção remove arquivos do destino que não estão mais na origem. Sempre rode antes com --dry-run --delete juntos para ver exatamente o que seria apagado, e faça um backup do destino antes de usar essa opção pela primeira vez.
Erros comuns e como resolver
- "command not found: rsync" — o rsync não está instalado na sua máquina local. No Linux normalmente já vem, e no macOS pode ser instalado via Homebrew. No Windows, use o WSL, que já traz o rsync.
- "Permission denied" — confira usuário, senha, porta e se o caminho de destino existe e se você tem permissão de escrita nele.
- Conexão cai no meio da transferência — não tem problema! É só rodar o mesmo comando de novo. Como o rsync só transfere o que falta, ele vai continuar de onde parou, sem duplicar trabalho.
Recapitulando
- Confirme que o acesso SSH está funcionando.
- Monte o comando com
-avze a opção-e "ssh -p PORTA". - Preste atenção na barra "/" no final da pasta de origem.
- Use
--dry-runpara testar antes de rodar de verdade. - Use
--deletesomente quando tiver certeza — e sempre com backup.
Pronto! Com esses passos você já consegue sincronizar arquivos entre servidores com segurança e tranquilidade. Se tiver qualquer dúvida sobre suas credenciais de acesso SSH ou sobre os recursos do seu plano, nossa equipe de suporte está por aqui para te ajudar. 🌱