rsync: como copiar/guardar ficheiros no Linux

Sumário

Introdução ao rsync

LinuxNeste tutorial, vou explicar-lhe como utilizar o rsyncrsync(Remote Synchronization) para fazer cópias/cópias de segurança.

rsynTrata-se de uma ferramenta de sincronização de pastas disponível na maioria das distribuiçõesLinuxe que é frequentemente utilizada para efetuar cópias de segurança de ficheiros/sites…

Ao utilizar sucessivamente o mesmo comando, ou seja, com a mesma origem e destino,rynco rsync irá copiar apenas os novos elementos e aqueles que foram alterados.

A vantagem de utilizar o rsync é o suporte nativo ao SSH, que permite copiar para um servidor remoto ou a partir de um servidor remoto.

Utilização do rsync

Agora, vamos ver como funciona o rsync.

Tal como a maioria dos programas de cópia, é necessário especificar uma origem e um destino:

rsync -parameters source/ destination/

Os parâmetros mais utilizados são:

  • -a / –archive: permite efetuar uma cópia recursiva, preservando praticamente todas as propriedades dos elementos copiados.
  • -v / –verbose: permite visualizar o progresso

Para ilustrar este tutorial, vamos guardar a pasta/etc/ansible/, numa primeira fase, no mesmo servidor, numa pasta específica/backup/ansible/, e, numa segunda fase, num servidor remoto.

Eis a pasta de origem:

Para copiar o ficheiro, eis o comando a utilizar:

sudo rsync -a /etc/ansible/ /backup/ansible/

-vComo se pode ver, o comando não apresenta qualquer saída; se se pretender obter informações sobre a transferência, é necessário adicionar o parâmetro.

Se eu verificar a pasta /backup/ansible/, vejo que as pastas e os ficheiros foram efetivamente copiados.

Como puderam ver no comando para efetuar a cópia, no final da fonte há um /.

Os dois comandos seguintes não têm o mesmo resultado:

  • rsync -a /etc/ansible /backup/ansible/
  • rsync -a /etc/ansible/ /backup/ansible/

O primeiro comando irá criar a pasta de origem no local de destino, o que significa que encontraríamos a cópia de segurança na seguinte pasta:/backup/ansible/ansible/ enquanto que o segundo comando copia o conteúdo da pasta de origem para a pasta de destino.

Para visualizar o progresso e o resultado do comandorsync, é necessário adicionar o parâmetro -v

sudo rsync -av /etc/ansible/ /backup/ansible/

Se eu executar o mesmo comando a seguir, pode-se ver que nada foi copiado, pois não foi efetuada qualquer alteração.

Na apresentação, referi quersynco suporta nativamente o SSH para efetuar a cópia de segurança para um servidor remoto e é isso que vamos ver agora.

O servidor remoto pode ser tanto a origem como o destino (pode até ser ambos ao mesmo tempo, mas ainda não experimentei!).

Eis a sintaxe para indicar o servidor remoto: <user>@<server>:/path/use/by/rsync/.

Para fazer a cópia de segurança da pasta /etc/ansible/ num servidor remoto:

sudo rsync -avz /etc/ansible/ [email protected]:/backup/ansible/

Ao executar o comando, é necessário indicar a palavra-passe da conta no servidor remoto.

Como podem ver, adicionei o parâmetro -z, que permite ativar a compressão durante a transferência.

A conta utilizada para a ligação ao servidor remoto deve ter direitos de escrita na pasta de destino.

No servidor de destino, encontro os meus ficheiros e pastas que foram transferidos por rsync.

Na Internet, também encontrará esta sintaxe de comando:

sudo rsync -e ssh -avz /etc/ansible/ [email protected]:/backup/ansible/

O parâmetro-e é adicionado para indicar o shell remoto (remote shell)

Se pretender criar um script de cópia de segurança para um servidor remoto, terá de configurar uma autenticação SSH por chave .

Parâmetros adicionais para o rsync

Para concluir este primeiro tutorial dedicado aorsync , eis alguns parâmetros úteis:

  • --delete-after : esta opção permite eliminar os ficheiros na pasta de destino que já não se encontram na fonte
  • --remove-source-files : eliminar os ficheiros da origem após a transferência; isto equivale a fazer um «cortar/colar», não sendo as pastas eliminadas.
  • --exclude : permite excluir ficheiros ou pastas--exclude="*.log" --exclude="temp"; ao adicionar isto ao comando rsync, serão excluídos todos os ficheiros com a extensão .log e as pastas cujo nome contenha «temp».

Agora já tem todas as informações necessárias para configurar scripts de cópias de segurança utilizando o rsync.

Além disso, aqui está a página dersync manual do rsync com todos os parâmetros disponíveis.

Num projeto tutorial, explicarei como fazer cópias de segurança diferenciais e incrementais com o rsync.

Romain Drouche

Romain Drouche

Architecte Système | MCSE: Core Infrastructure

Expert en infrastructures IT avec plus de 15 ans d'expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d'Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

GHinM▶