O comando Rsync no Linux com exemplos

rsync é um rápido e versátil utilitário de linha de comando para sincronizar arquivos e diretórios entre dois locais através de uma shell remota, ou de/para um daemon Rsync remoto. Ele fornece rápida transferência de arquivos incremental transferindo apenas as diferenças entre a fonte e o destino.

Rsync pode ser usado para espelhar dados, backups incrementais, copiar arquivos entre sistemas, e como um substituto para scp, sftp, e cpcommands.

Este artigo explica como usar rsync através de exemplos práticos e explicações detalhadas das mais comuns rsync opções.

Instalando o Rsync #

O utilitário rsync está pré-instalado na maioria das distribuições Linux e macOS. Se você não tiver rsync instalado no seu sistema, você pode facilmente instalá-lo usando o gerenciador de pacotes da sua distribuição.

Instalar Rsync no Ubuntu e Debian #

sudo apt install rsync

Instalar Rsync no CentOS e Fedora #

sudo yum install rsync

Sintaxe do Comando Rsync #

Antes de entrar em como usar o comando rsync, vamos começar por rever a sintaxe básica.

As rsync expressões de utilidade tomam a seguinte forma:

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – As opções rsync.
  • SRC – Diretório de origem.
  • DEST – Diretório de destino.
  • USER – Remote username.
  • HOST – Remote hostname or IP Address.

rsync fornece um número de opções que controlam como o comando se comporta. As opções mais utilizadas são:

  • -a, --archive, modo de arquivo, equivalente a -rlptgoD. Esta opção diz rsync para sincronizar diretórios recursivamente, transferir dispositivos especiais e de bloco, preservar links simbólicos, tempos de modificação, grupos, propriedade e permissões.
  • -z, --compress. Esta opção força rsync a comprimir os dados à medida que eles são enviados para a máquina de destino. Use esta opção apenas se a ligação à máquina remota for lenta.
  • -P, equivalente a --partial --progress. Quando esta opção é utilizada, rsync mostra uma barra de progresso durante a transferência e mantém os ficheiros parcialmente transferidos. É útil quando se transferem arquivos grandes através de conexões de rede lentas ou instáveis.
  • --delete. Quando esta opção é utilizada, rsync apaga os ficheiros externos do local de destino. É útil para espelhar.
  • -q, --quiet. Use esta opção se você quiser suprimir mensagens não-erro.
  • -e. Esta opção permite que você escolha um shell remoto diferente. Por defeito, rsync está configurado para usar ssh.

Basic Rsync Usage #

O caso de uso mais básico de rsync é copiar um único ficheiro de um para outro local local. Aqui está um exemplo:

rsync -a /opt/filename.zip /tmp/

O usuário executando o comando deve ter permissões de leitura no local de origem e de escrita no destino.

Omitindo o nome do arquivo do local de destino copia o arquivo com o nome atual. Se você quiser salvar o arquivo com um nome diferente, especifique o novo nome na parte de destino:

rsync -a /opt/filename.zip /tmp/newfilename.zip

O verdadeiro poder de rsync vem quando sincronizar diretórios. O exemplo abaixo mostra como criar uma cópia de segurança local dos ficheiros do website:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Se o directório de destino não existir, rsync irá criá-lo.

Vale a pena mencionar que rsync dá um tratamento diferente aos directórios de origem com uma barra oblíqua (/). Se o diretório de origem tiver uma barra deslizante, o comando copiará apenas o conteúdo do diretório para o diretório de destino. Quando a barra móvel é omitida, rsync copia o directório de origem dentro do directório de destino.

Usar rsync para sincronizar dados de/para uma máquina remota #

Quando usar rsync para transferir dados remotamente, estes devem ser instalados tanto na máquina de origem como na máquina de destino. As novas versões de rsync estão configuradas para usar SSH como shell remoto padrão.

No exemplo a seguir, estamos transferindo um diretório de uma máquina local para uma remota:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Se você não definiu um log SSH sem senha para a máquina remota, você será solicitado a digitar a senha do usuário.

Para transferir dados de uma máquina remota para uma máquina local, use a localização remota como fonte:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Se o SSH no host remoto estiver escutando em uma porta diferente da padrão 22 , especifique a porta usando a opção -e:

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Quando transferir grandes quantidades de dados é recomendado executar o comando rsync dentro de uma sessão de tela ou usar a opção -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Excluir arquivos e diretórios #

Excluir arquivos e diretórios são duas opções. A primeira opção é usar o argumento --exclude e especificar os ficheiros e directorias que quer excluir na linha de comandos.

Quando excluir ficheiros ou directorias, precisa de usar os seus caminhos relativos para a localização da fonte.

No exemplo seguinte mostra como excluir os node_modules e tmp directorias:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

A segunda opção é usar a opção --exclude-from e especificar os ficheiros e directorias que pretende excluir num ficheiro.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modulestmp

Conclusion #

Mostramos-lhe como usar o Rsync para copiar e sincronizar ficheiros e directorias. Há muito mais para aprender sobre Rsync no Manual do Usuário do Rsync.

Deixe uma resposta

O seu endereço de email não será publicado.