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, _o _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
$ sudo systemctl enable sshd && sudo systemctl start sshd
$ sudo firewall-cmd --permanent --add-service=ssh
$ sudo firewall-cmd --reload
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:
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 .
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:
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
$ sudo firewall-cmd --add-port=873/tcp --permanent
$ sudo firewall-cmd --reload
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 ```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 .
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, comente!