Linux: utilize o rsync para fazer backup
Há muitas formas de se copiar arquivos no linux, desde os básicos cp, rcp, scp, etc… mas uma das melhores é utilizando um pequeno aplicativo chamado rsync. Na verdade o que será feito é mais do que uma cópia, é uma sincronização. Se foi feita alguma mudança o aplicativo ira refletir isso. Ou seja, adicione os arquivos novos, retire os excluídos, altere as propriedades, etc… Se você sincronizar com rsync, alterar um arquivo e fizer uma nova sincronização, apenas as partes alteradas daquele arquivo serão atualizadas, muito mais rápido que refazer tudo.
O formato do comando é muito simples
rsync [OPTION...] origem destino
Há muitas opções no rsync, sugiro um rsync –help para ver todas, mas vou dar uma lista bastante interessante e que serve a quase todos. No exemplo a seguir vou copiar recursivamente TODOS os diretórios e subdiretórios da minha pasta, mantendo as permissões e propriedade (no sentido de dono, ownership) dos arquivos, para um pendrive:
rsync -av /home/compdicas /media/disk/compdicas
a “/” final faz toda a diferença no diretório de origem. Seu eu escrever /home/compdicas/, o aplicativo cria uma pasta compdicas no destino e copia tudo. Seu eu não colocar a barra final, ele apenas copia os diretórios recursivamente para /media/disk/compdicas. Isso é fundamental para backups.
Opções:
-a, –archive: reúne uma série de opções em um mesmo comando, é o mesmo que -rlptgoD. De forma geral, copia recursivamente (-r), copia symlinks como symlinks (-l), preserva as permissões (-p), preserva os horários de criação, alteração, etc dos arquivos (-t), preserva o grupo (-g), preserva o proprietário (-o) e o -D preserva devices e special files
-v, –verbose: o bom e velho verbose mostra o que está acontecendo. Você também pode utilizar -vv e -vvv para saber ainda mais sobre o que está acontecendo.
-z, –compress: Comprime o arquivo durante a transferência. É excencial se a transferência é feita entre dois computadores distintos, na mesma rede ou pela internet. Se for localmente, de um HD para outro do mesmo computador, é melhor não utilizar essa opção.
–delete: deleta no diretório a ser sincronizado os arquivos que foram excluídos no diretório de origem. atenção: muito cuidado com o comando delete, de fato, enquanto você se acostuma com o rsync é melhor não utiliza-lo, ou pelo menos substitui-lo pelo –dry-run
–dry-run: mostra o que o rsync faria (sem chegar a fazer nada). Muito bom para ver se era isso mesmo que você queria. Recomendo fortemente antes de sair utilizando o rsync, “brincar” bastante sempre com essa opção.
Assim, o nosso comando ficaria:
rsync -av –delete /home/compdicas /media/disk/compdicas
Sincronizando remotamente de forma segura (com SSH)
Uma das coisas boas do rsync é a facilidade em se utilizar o SSH para conectar a um servidor remoto de forma segura. Nada de ficar se expondo, basta indicar o destino na forma de um usuário em outra máquina. Antes porém, mais duas opções:
–progress: exibe o progresso da transferência
-e: especifica o shell a ser utilizado, no caso, SSH
O que, substituindo pelo seu nome de usuário, nome do servidor e diretórios, resultaria em :
rsync -avze ssh –delete –progress /home/compdicas/dir/ user@servidorremote.com.br:dir/
O programa, claro, irá solicitar a senha.Caso não queira ficar digitando a senha todas as vezes, utilize o seguinte procedimento para gera uma chave:
Crie uma chave (e pressione ENTER quando o sistema perguntar por uma passphrase):
ssh-keygen -t dsa
Em seguida, copie a chave para o servidor remoto com:
ssh-copy-id -i .ssh/id_dsa.pub user@servidorremoto.com.br
E finalmente o rsync (igual ao anterior):
rsync -avze ssh –delete –progress /home/compdicas/dir/ user@servidorremote.com.br:dir/
Espero que a dica tenha sido útil. Qualquer dúvida ou sugestão (vale elogio também
), não esqueçam de comentar.
comentários
3 comentários para “Linux: utilize o rsync para fazer backup”
Deixe seu comentário






Excelente arquivo. O comando –delete era o que faltava para mim para manter o backup exatamente igual entre meus arquivos e o hd de backup.
Um abraço
Marcelo
Cara, muito bom mesmo! Ótimo artigo. Eu achei diversos artigos sobro o rsync, mas nenhum em pt_BR com tanta propriedade e detalhes em sua descrição.
Estou com uma dúvida e gostaria de saber se pode me ajudar, tenho 2 servidores de arquivos em cidades diferentes, gostaria de manter o sincronismo dos dados via internet, só que ambos os servidores produzem arquivos e todos precisam estar sincronizados.
Os arquivos criados no servidor A, precisam estar no servidor B e os criados no servidor B, precisam estar no A. Será que com rsync isso é possível? Sincronização nas duas frentes?
Desde já agradeço!
faça o rsync de A para B e em seguida de B para A. Deve funcionar.
[]s
Simplesmente prático e prático usei aprovei thks