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 cp
commands.
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 dizrsync
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çarsync
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/
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/
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.