Backup com Rsync
RSYNC
O comando rsync é um utilitário para sincronização de arquivos e diretórios entre duas localidades diferentes, locais ou remotos. Possibilitando a copia apenas dos arquivos que foram alterados desde a última sincronia.
Na primeira cópia o Rsync copia todos os arquivos entre origem e destino, após a primeira transferência ele faz a comparação entre eles e decide o que deve ser copiado.
Antes de transferir os dados, faz uma comparação do arquivo na origem e no destino. Os arquivos são quebrados em segmentos e os seus checksums são comparados. Os pedaços cujos checksums forem diferentes são transmitidos. A maioria dos repositórios de pacotes para Linux utilizan o rsync como método de atualização com os servidores oficiais da distribuição.
A syntaxe do comando é:
rsync <opções> <origem> <destino>
Exemplos de uso do comando rsync:
debian:~# rsync -avz /mnt/servidor /backups
Onde é feita a cópia recursiva do diretório /mnt/servidor, preservando os links, proprietários para o diretório /backups. Algumas opções do comando rsync:
1 2 3 4 5 6 7 8 9 10 | a – basicamente indica que você quer que a cópia seja recursiva e que tudo seja preservado v – verbose m – ignora diretórios vazios z – compactar os arquivos transferidos e – especifica qual o shell remoto a ser usado --progress – mostra o progresso da copia --delete-excluded – remove ns origem arquivos que não existam no destino --delete – remove no destino arquivos que não existam na origem --partial – se a conexão cair, continua de onde parou |
Fazendo a copia entre máquinas remotas, copiando o /home da máquina 172.16.1.200 para o /backup da máquina local:
debian:~# rsync -avz –progress –partial -e ssh [email protected]:/home /backups
Com a opção -e o rsync utiliza como shell remoto o SSH, fazendo com que toda a
transferência seja criptografada, garantindo maior segurança para o transporte dos
dados.
Se quisermos que a transferência entre os hosts ocorra pelo SSH mas sem o uso de senhas, podemos estabelecer uma relação de confiança entre as máquinas utilizando chaves assimétricas.
Se você criar um script de backup com Rsync e SSH que seja executado com direito de root na máquina local faça o seguinte logado como root:
debian:~# ssh-keygen
Pode pressionar enter para tudo, isso coloca o nome padrão id_rsa nas chaves e dispensa o uso de senhas.
Para copiar a chave para a máquina remota faremos o seguinte:
debian:~# ssh-copy-id [email protected]
Forneça a senha e isso fará com que as conexões feitas da máquina local, usando a conta de root para a máquina remota com a conta de user a autenticação será feita pelo uso das chaves e não pela senha, portanto seus scripts de backup poderão ser agendados e serem transferidos de forma segura sem que precise de alguém fornecer senha pra isso.
Espero que sua desculpa pra não fazer backup às vezes não seja mais usada depois desse comando ;-). Lembrando que tem Rsync para Windows.
Continuem acessando nosso Portal, continuem comentando e nos ajudando a fazer um melhor CooperaTI pra vocês.
Boa noite Vagner !
sempre acompanho os posts do Cooperati e são sempre dicas muito úteis para nosso dia a dia em TI. Aproveitando a oportunidade, gostaria de pedir que se for possivel, que vocês escrevessem um post sobre backup com ISCSI integrando Linux e Windows.
Rafael,
Interoperabilidade é a palavra de ordem aqui no CooperaTI. Podemos em artigos futuros tratar sim sobre isso. Obrigado pela sugestão.
Muito bom, como as suas aulas! Parabéns!
Só para reforçar esse artigo, no meu caso eu estava essa semana precisando utilizar o rsync no Windows para fazer uma backup secundário do banco de dados da empresa no dropbox, porem queria fazer um backup com rsync ao invés de um total toda a noite.
Depois de tanto procurar achei um cliente rsync para windows, o cwRsync.
Sua utilização é a mesma do rsync par Linux, mudando apenas que você tem que colocar o caminho inteiro para a aplicação e que ele reconhece o C:\ como /.
Espero que isso ajude mais alguem que esteja atrás dessa solução.
Abraço.
Tácio, é necessário montar um servidor para usar esse sistema de backup, como fazemos com o Bacula, ou pode rodar direto no sistema?