O GUIA definitivo para um Rsync NEWBIE

Lembro de quando pesquisava sobre o Rsync no começo da minha aventura no mundo Linux e ninguém conseguia explicar de uma forma simples as suas vantagens, como utilizar, etc. Mas, hoje, eu preparei para você que nunca utilizou o Rsync, guia definitivo para um Rsync NEWBIE.

O Rsync é um dos mais “famosos” e mais utilizados programas para fazer cópias de arquivos, seja ela local ou remota. Podemos citar aqui algumas vantagens:

  • É possível copiar arquivos localmente, assim como o cp;
  • É possível copiar arquivos remotamente usando tunelamentos como o SSH;
  • Outra alternativa é copiar remotamente usando o próprio rsync em modo daemon via TCP;
  • A maior vantagem do rsync é que toda cópia é incremental, isto é, somente as diferenças serão copiadas. Não entendeu? Imagina que tenho 12 arquivos. Copiei eles via rsync para outro host. Depois adicionei mais dois arquivos. Quando rodar o rsync novamente, serão copiados apenas os 2 arquivos novos.
  • Isto faz com que o consumo de banda da rede seja muito menor;
  • É possível também utilizar um algoritmo de compressão de dados durante a transferência, fazendo com que o tamanho seja menor e haja menos consumo de banda;

Deu pra ter uma ideia do poder dele né?

Obs.: Não confunda o rsync com um software de backup, pois não é possível fazer agendamento de execução. Para isso, tens de integrá-lo com o Cron ou Anacron.

Como copiar arquivos remotamente via SSH com o RSYNC?

Antes de tudo, esteja ciente do meu ambiente:

  • Servidor: CentOS 7.
  • Cliente: Fedora 28.

Bom, para copiar via SSH, devemos ter o SSH instalado em ambos os equipamentos, correto? Vamos configurar isso primeiro, caso você não tenha.

No servidor:

  • $ sudo yum install openssh-server -y # Instala o servidor SSH
  • $ sudo systemctl enable sshd && sudo systemctl start sshd # Habilita no boot e inicia
  • $ sudo firewall-cmd –permanent –add-service=ssh # Abre a porta 22 no Firewalld
  • $ sudo firewall-cmd –reload # Reinicia o Firewalld

No cliente:

  • $ sudo yum install openssh -y

Agora que o SSH já está configurado, é hora de instalar o rsync em ambos os sistemas:

  • $ sudo yum install rsync -y

Finalizada a instalação de tudo é hora de criar a pasta de compartilhamento no servidor:

O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

Veja que criei um diretório chamado rsync com 6 arquivos dentro, no /home/mmuller.

Agora, vou iniciar a cópia dos arquivos lá no cliente:

  • $ rsync -avz mmuller@192.168.25.52:~/rsync .
O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

A senha do usuário mmuller será solicitada. Assim que preencher, os arquivos serão copiados.

Deixa eu te explicar os parâmetros que usei:

  • -a) Este é um parâmetro é equivalente a utilizar -rlptgoD. Isto é, copiar recursivamente, mantendo links simbólicos, permissões, timestamps, grupo, owner e devices.
  • -v) Este parâmetro mostra mais detalhes do processo.
  • -z) Este é o parâmetro de compressão de dados durante a busca.

Existem milhares de outros parâmetros que você pode consultar em:

  • $ man rsync

Agora veja que interessante, se eu criar um novo arquivo file7 e copiar novamente, somente este arquivo será copiado, visto que é a única coisa de diferente:

O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

Como copiar arquivos remotamente via daemon com o RSYNC?

A outra forma de copiar os arquivos remotamente usando o rsync é utilizando ele mesmo em modo daemon e copiar via protocolo TCP. Não achei nenhum material “simples” com apenas o básico para isso funcionar, mas consegui descobrir depois de algumas pesquisas. Então vamos lá!

A primeira coisa é configurar o servidor para rodar o rsync no modo daemon:

  • $ sudo systemctl enable rsyncd && sudo systemctl start rsyncd # Habilita no boot e inicia como daemon
  • $ sudo firewall-cmd –add-port=873/tcp –permanent # Abre a porta do rsync no Firewalld
  • $ sudo firewall-cmd –reload # Reinicia o Firewalld
O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

Muito bem, já está escutando na porta 873. Agora, vamos configurar um diretório para compartilhar dentro do /.

  • $ mkdir /share
  • $ cd /share
  • $ touch arquivo{1,2,3,4,5}

Finalizado este processo, vamos editar o arquivo de configuração do rsync. Utilize o editor de texto que quiser, seja nano, gedit, vim. Caso não saiba utilizar, veja o vídeo abaixo.

Desmistificando o VI para a LPIC-1 & LFCS

  •  $ vim /etc/rsyncd.conf
O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

Este é um exemplo de configuração extremamente básico, onde:

  • [backup]) É nome que daremos ao compartilhamento. Não precisa ser o mesmo nome do diretório que irás compartilhar.
  • path) Diretório que será compartilhado, neste caso, o /share que criamos.
  • read only) Define se será apenas leitura ou não.
  • secrets file) Aponta para um arquivo de usuário e senhas do próprio rsync. Desta forma, não precisamos digitar a senha toda a vez que foi copiar.

Salve o arquivo e saia com :wq!.

Agora, devemos criar o arquivo com usuário e senha:

  • $ sudo echo “rsync:rsync” >> /etc/rsyncd.secrets
  • $ sudo chmod 600 /etc/rsyncd.secrets

Isto quer dizer que o usuário é o rsync e a senha também é rsync.

Falta apenas uma coisa agora. O CentOS vem com SELinux habilitado por padrão para aumentar a segurança, fazendo com que o rsync não tenha acesso ao diretório /share, mesmo que coloquemos em 777. Então, vamos apenas desabilitar.

Obs.: NÃO é recomendado desabilitar o SELinux, isto é apenas para fins de entendimento do RSYNC. Este conteúdo ficará para um próximo artigo ou vídeo.

Para desabilitar:

  • $ sudo setenforce 0

Para desabilitar permanentemente, altere o arquivo /etc/selinux/config, mudando a opção para SELINUX=disabled.

Ok, agora, por parte do servidor é isso. Vamos iniciar uma cópia para testar.

  • $ rsync -avz rsync@192.168.25.52::backup .
O GUIA definitivo para um Rsync NEWBIE
O GUIA definitivo para um Rsync NEWBIE

Muito bem, cópia executada e sem solicitar nenhuma senha. Note que, o usuário que usamos foi o rsync e não mmuller mais, conforme o arquivo /etc/rsyncd.secrets.

Além disso usamos :: ao invés de só :, pois o :: define que está copiando via daemon, já o : define que está copiando via SSH.

Por final, adicionamos o nome do compartilhamento que criamos no rsyncd.conf, chamado de backup.

É isso ai galera, agora você tem um bom entendimento sobre quem é o rsync, suas vantagens e como utilizar a suas duas formas de cópia! 😉

Espero de coração que tenha gostado deste artigo, um grande abraço!

 

Veja também:

 

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, entre em contato aqui ou comente abaixo!