Como usar o rsync com SSH pra automatizar seus deploys
Oi! Aqui é a Sensei da GeHost 🧘♀️ Se você já perdeu tempo arrastando arquivos um por um pro FTP toda vez que atualiza o site, hoje eu vou te ensinar uma mágica boa: o rsync. Com ele você manda só o que mudou pro servidor, de forma segura, usando SSH. Vamos com calma, passo a passo.
O que é o rsync e por que ele é tão bom
O rsync é uma ferramenta de linha de comando que sincroniza pastas entre seu computador e o servidor. A diferença dele pro FTP tradicional é que ele compara os arquivos e envia apenas as diferenças — isso deixa o deploy mais rápido e evita reenviar tudo de novo a cada atualização. Quando combinado com SSH, a conexão fica criptografada, ou seja, seus dados viajam protegidos até o servidor.
💡 Dica da Sensei: pense no rsync como um "espelho inteligente" — ele olha pros dois lados (seu computador e o servidor), percebe o que mudou e só copia essa diferença.
Pré-requisito: acesso SSH habilitado
Antes de mais nada, confirme com o suporte ou no painel do cliente (painel.gehost.com.br) se o seu plano de hospedagem tem acesso SSH liberado, e peça os dados de conexão (usuário, host e porta) que serão usados nos comandos abaixo. Nunca compartilhe essas informações com terceiros.
Passo a passo pra configurar o deploy com rsync + SSH
-
Gere uma chave SSH no seu computador (se ainda não tiver uma). No terminal, digite:
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"Aperte Enter nas perguntas pra aceitar o caminho padrão. Isso cria duas chaves: uma privada (fica só com você) e uma pública (vai pro servidor).
-
Copie sua chave pública pro servidor usando o comando
ssh-copy-id:ssh-copy-id -p PORTA usuario@seu-servidorTroque PORTA, usuario e seu-servidor pelos dados que você recebeu do suporte. Isso evita ter que digitar senha toda vez.
-
Teste a conexão SSH antes de partir pro rsync, só pra garantir que está tudo certo:
ssh -p PORTA usuario@seu-servidorSe conectou sem pedir senha, prontinho, pode fechar essa sessão e seguir em frente.
-
Rode seu primeiro rsync apontando a pasta local pra pasta de destino no servidor (geralmente
public_html):rsync -avz -e "ssh -p PORTA" ./meu-projeto/ usuario@seu-servidor:/home/usuario/public_html/Repare na barra / no final das pastas — ela é importante! Sem ela o rsync pode criar uma subpasta em vez de sincronizar o conteúdo.
-
Entenda as opções principais que usamos ali:
-a— modo "arquivo", preserva permissões, datas e estrutura de pastas-v— modo detalhado (verbose), mostra o que está sendo enviado-z— comprime os dados durante o envio, deixando mais rápido-e "ssh -p PORTA"— diz ao rsync pra usar SSH na porta configurada
-
Teste sempre com --dry-run antes de aplicar de verdade:
rsync -avz --dry-run -e "ssh -p PORTA" ./meu-projeto/ usuario@seu-servidor:/home/usuario/public_html/Esse comando simula o envio e mostra o que seria alterado, sem mexer em nada ainda. É a sua rede de segurança!
-
Use --exclude pra não enviar arquivos que não devem ir pro servidor, como configurações locais ou pastas pesadas:
rsync -avz --exclude 'node_modules' --exclude '.git' --exclude '.env' -e "ssh -p PORTA" ./meu-projeto/ usuario@seu-servidor:/home/usuario/public_html/
Transformando isso em um script de deploy
Pra não digitar tudo isso toda vez, você pode salvar o comando num arquivo, por exemplo deploy.sh:
#!/bin/bash rsync -avz --exclude 'node_modules' --exclude '.git' --exclude '.env' \ -e "ssh -p PORTA" \ ./meu-projeto/ usuario@seu-servidor:/home/usuario/public_html/ echo "Deploy concluído! ✅"
Depois, dê permissão de execução e rode sempre que precisar atualizar o site:
chmod +x deploy.sh./deploy.sh
💡 Dica da Sensei: se você usa GitHub Actions, GitLab CI ou outra ferramenta de integração contínua, esse mesmo comando de rsync pode entrar como um passo automático do seu pipeline — assim o deploy acontece sozinho a cada novo commit. Se tiver dúvida de como integrar com a sua ferramenta específica, nosso suporte pode te orientar.
Cuidados importantes de segurança
- Nunca compartilhe sua chave privada SSH (o arquivo sem a extensão
.pub) com ninguém. - Prefira sempre autenticação por chave em vez de senha — é mais segura e evita ataques de força bruta.
- Evite usar
--deleteno rsync sem antes rodar com--dry-run: essa opção apaga do servidor os arquivos que não existem mais na sua pasta local, e um engano pode remover algo importante. - Guarde seu script de deploy fora de repositórios públicos se ele tiver qualquer dado sensível.
Pronto, agora é praticar!
Com esses passos você já consegue automatizar seus deploys de forma tranquila, rápida e segura. Se em algum momento aparecer alguma mensagem de erro de conexão, permissão ou porta, é só chamar o suporte da GeHost — a gente te ajuda a destravar. Bons deploys! 🚀