O que rsync faz?
Visão Geral
rsync é a ferramenta padrão para sincronização eficiente de arquivos. Ela transfere apenas as partes alteradas dos arquivos (transferência delta), suporta SSH, lida com permissões e funciona para backups, implantações e espelhamento de diretórios.
Instruções
Passo 1: Uso Básico
# Sincronizar diretórios locais
rsync -avz source/ destination/
# -a = archive (preserva permissões, timestamps, symlinks)
# -v = verbose
# -z = comprimir durante a transferência
# Sincronizar para servidor remoto
rsync -avz ./dist/ deploy@server:/var/www/myapp/
# Sincronizar a partir do remoto
rsync -avz deploy@server:/var/log/myapp/ ./logs/
# Dry run (mostra o que mudaria sem executar)
rsync -avzn source/ destination/
Passo 2: Padrões Comuns
# Implantar site (apaga arquivos no destino que não existem na origem)
rsync -avz --delete ./build/ deploy@server:/var/www/site/
# Backup com exclusão
rsync -avz --exclude='node_modules' --exclude='.git' --exclude='.env' \
/opt/myapp/ /backups/myapp/
# Backup incremental com hard links (econômico em espaço)
rsync -avz --link-dest=/backups/latest \
/opt/myapp/ /backups/$(date +%Y%m%d)/
ln -snf /backups/$(date +%Y%m%d) /backups/latest
# Limitar largura de banda (útil para transferências grandes)
rsync -avz --bwlimit=5000 source/ destination/ # 5000 KB/s
Passo 3: Script de Implantação
#!/bin/bash
# scripts/deploy.sh — Implantar app com rsync
SERVER="[email protected]"
REMOTE_DIR="/var/www/myapp"
echo "Construindo..."
npm run build
echo "Sincronizando arquivos..."
rsync -avz --delete \
--exclude='node_modules' \
--exclude='.env' \
--exclude='.git' \
./dist/ ${SERVER}:${REMOTE_DIR}/
echo "Reiniciando serviço..."
ssh ${SERVER} "sudo systemctl restart myapp"
echo "Implantação concluída!"
Diretrizes
- Sempre use
-n(dry run) primeiro ao usar--deletepara evitar perda acidental de dados. - A barra final importa:
source/sincroniza o conteúdo,sourcesincroniza o diretório em si. - Para transferências grandes, adicione
--progresspara ver o progresso por arquivo. - rsync sobre SSH é criptografado por padrão — seguro para transferências pela internet.