Sincronizando e fazendo backup de arquivos com rsync
Tabela de Conteúdo
Copiar arquivos com cp funciona, mas quando o diretório é grande e você só quer atualizar o que mudou, ele reescreve tudo de novo. O rsync resolve isso: ele compara origem e destino e transfere só a diferença.
Sincronizando localmente
$ rsync -avz /origem/ /destino/
-a(archive) preserva permissões, links, donos e timestamps, e sincroniza subdiretórios recursivamente-vmostra o que está sendo copiado-zcomprime os dados durante a transferência
Repare na barra no final de /origem/. Com a barra, o rsync copia o conteúdo do diretório para dentro de /destino/. Sem a barra, ele copia o diretório origem inteiro para dentro de /destino/.
Simulando antes de executar
Antes de rodar de verdade, principalmente com --delete, vale simular:
$ rsync -avz --dry-run /origem/ /destino/
Nada é copiado, só mostra o que seria feito.
Sincronizando via SSH
Pra outro servidor, basta indicar o destino como usuário@host:caminho:
$ rsync -avz -e ssh /origem/ usuario@servidor:/destino/
Se a porta do SSH não for a padrão:
$ rsync -avz -e "ssh -p 2222" /origem/ usuario@servidor:/destino/
Removendo no destino o que sumiu na origem
Por padrão o rsync só copia e atualiza, nunca apaga. Se quiser que o destino fique idêntico à origem, incluindo remover arquivos que não existem mais:
$ rsync -avz --delete /origem/ /destino/
Use com cuidado — combine sempre com --dry-run primeiro pra conferir o que seria apagado.
Ignorando arquivos e diretórios
$ rsync -avz --exclude '*.log' --exclude 'node_modules/' /origem/ /destino/
Simples assim :)