Como usar o rsync com exemplos

Como usar o rsync com exemplos
O RSYNC é uma ferramenta popular para sincronização de arquivos, local e remotamente. Ao contrário de outras ferramentas de sincronização, o RSYNC usa um algoritmo interessante que minimiza o consumo de largura de banda. Simplesmente move a parte dos arquivos que mudaram.

É um utilitário poderoso que pode servir em muitas situações. Neste artigo, mostrarei como começar com o RSYNC com uma demonstração. A demonstração será realizada no Ubuntu 18.04.

Rsync

Rsync significa o termo sincronização remota. Apesar do nome, ele pode lidar com a sincronização de arquivo remotamente e localmente. O termo rsync também é usado para se referir ao protocolo RSYNC que o RSYNC usa para sincronizar. Neste artigo, o RSYNC sempre denotará a ferramenta, não o protocolo.

Devido à sua pura popularidade, o RSYNC está disponível em quase todos os sistemas Linux e UNIX. Há uma boa chance de ser pré-instalado. Caso contrário, faça uma pequena pesquisa sobre como instalar o RSYNC em seu sistema.

Aqui está uma lista restrita de recursos que o RSYNC oferece.

  • Cópia de diretório
  • Configuração fácil de backup
  • Pode trabalhar em SSH
  • Pode ser executado como daemon/servidor
  • Retenção de permissão do arquivo

Uso do RSYNC

Antes de pular para o RSYNC, precisamos de alguns arquivos fictícios para trabalhar. Vamos criar um diretório fictício primeiro.

$ mkdir -v primário

Uma vez criado, é hora de criar um punhado de arquivos fictícios. Para criar um arquivo, usarei o comando Touch. Saiba mais sobre o comando Touch.

$ Touch Dummy 1… 20

Pronto! Agora estamos prontos para usar o RSYNC para executar ações usando esses arquivos fictícios.

Estrutura de comando rsync

O RSYNC usa a seguinte estrutura de comando.

$ rsync

Sincronizar diretórios locais

Agora, é hora de usar o RSYNC para sincronizar arquivos em vários destinos. Neste exemplo, estaremos sincronizando o conteúdo de DIR_Primary para dir_target.

$ mkdir -v alvo

Diga ao RSYNC para sincronizar o conteúdo de ambos os diretórios.

$ rsync -v -r Primary/ Target

Aqui, usamos dois argumentos diferentes.

-v: Diz ao RSYNC para encontrar o modo detalhado
-r: Recursive, necessário para a sincronização de diretórios.

Neste próximo exemplo, usaremos uma bandeira diferente.

$ rsync -v -a primário/ destino

-a: Uma bandeira combinada que significa "Arquivo".

Usando esse sinalizador, o RSYNC sincronizará o conteúdo recursivamente, preservando quaisquer arquivos simbólicos, especiais/de dispositivo, tempos de modificação, permissões de arquivo, grupo, proprietário, etc. É mais comumente usado do que a bandeira "-r". Para o arquivo, este é um método mais recomendado.

Você notou que em todos os comandos que executamos até agora, no caso da fonte, sempre retemos o "/" após o nome do diretório? Isso é para dizer ao RSYNC que a fonte é todo o conteúdo do diretório de origem. Se o "/" no final do diretório de origem não for usado, o RSYNC simplesmente criará uma cópia do diretório de origem em vez de seu conteúdo.

Vamos verificar com um exemplo.

$ rsync -v -um alvo principal

Verifique o resultado da saída.

$ TEVERTE TERGA/

Na maioria das vezes, isso não é algo que precisamos. No entanto, dependendo da situação, pode ser útil.

RSYNC TEST RUN

Antes de executar um comando rsync, é sempre importante verificar se o comando executará a ação conforme esperado. Se você deseja testar a ação do RSYNC para um determinado comando, use a bandeira "-n" ou "-Dry Run".

$ rsync -AVN Primary/ Target
$ rsync -avn alvo primário

Aqui, a saída mostra o que o RSYNC executaria se o comando fosse realmente executado. Sempre que você estiver testando, não se esqueça de usar a bandeira "-v" para obter uma representação precisa do que está acontecendo.

Rsync sobre uma conexão remota

Este é outro recurso interessante suporta o RSYNC. Se o seu local de backup estiver em algum lugar remoto, você poderá configurar facilmente o RSYNC para realizar backup no local remoto através do SSH. No entanto, ambas as máquinas devem ter o RSYNC instalado. Além disso, ambos os sistemas também precisam ter as chaves ssh definidas.

Preparar? Vamos começar. No começo, é a sincronização do arquivo.

$ rsync -a @:<
destino_dir>

Aqui, esta operação é chamada de "push" porque empurra um diretório do sistema local para um sistema remoto. O oposto é conhecido como "puxar".

$ rsync -a @:

O RSYNC trata o primeiro argumento como fonte, o segundo como o destino.

Opções úteis do RSYNC

O RSYNC suporta uma tonelada de opções. Todos eles servem ao seu próprio propósito. No entanto, na maioria das vezes, apenas alguns deles são usados ​​na maioria das vezes. Nesta seção, vamos dar uma olhada em algumas opções úteis do RSYNC.

Na maioria das vezes, os arquivos que você está prestes a sincronizar não são compactados. Usando compactação, você pode economizar tempo e largura de banda ao custo de um pouco de poder de processamento extra. O RSYNC oferece compactação por padrão. Para executar a sincronização compactada, use a bandeira "-z".

$ rsync -avz

Esta bandeira interessante combina a função da bandeira "-Progress" e "-Parcial". O primeiro é mostrar uma barra de progresso da transferência e a segunda é permitir a retomada de transferência interrompida. Ambos os recursos são combinados na bandeira "-p".

$ rsync -avzp

Agora, vamos verificar como o RSYNC lida com a sincronização de arquivos de forma inteligente. Execute o comando anterior novamente.

$ rsync -avzp

Aqui, o RSYNC não voltou a appliar todos os arquivos. Em vez disso, pulou aqueles que não mudaram de forma alguma. Neste exemplo, ele pulou todos os arquivos, pois todos eles estão presentes no diretório de destino.

E se você excluísse um arquivo do diretório de origem? Por padrão, o RSYNC não excluirá nada do diretório de destino. Para forçar os arquivos de exclusão do RSYNC, use a sinalização "-delete". No entanto, use a corrida a seco para testar se o comando funcionar como você quiser.

$ rsync -Avn -Delete

Por padrão, o RSYNC sincronizará todos os arquivos/diretórios da fonte para o diretório de destino. Em determinadas situações, você pode incluir/excluir determinados arquivos da sincronização. O RSYNC oferece opções úteis como "-exclude" e "-include" para excluir/incluir certos arquivos. Passe o padrão de arquivo como o valor para esses argumentos.

$ rsync -avn --exclude = --incluir =

Você também pode definir o maior tamanho de arquivo que o RSYNC deve sincronizar. Para fazer isso, use a bandeira "-Max-Size" seguida pelo tamanho do arquivo.

$ rsync -avn -max -size = '10k'

O RSYNC tem outro recurso interessante em sua manga. Não precisa mais do arquivo de origem após a sincronizar? O RSYNC pode fazer isso, sem problemas. No entanto, verifique se você não está executando o RSYNC com a bandeira "-delete". Caso contrário, o RSYNC excluirá os arquivos sincronizados do destino!

$ rsync -AV-Remove-source-Files

Pensamentos finais

Estes são apenas um cenário comum e simples de uso do rsync. Oferece muito mais do que isso. É possível automatizar operações do RSYNC usando o daemon rsync ou outro script. Felizmente, este guia foi útil para começar com o RSYNC.

Interessado em mais rsync? Bem, você pode usar o RSYNC como um copiador de arquivo. É mais eficiente e inteligente que CP. Recursos mais detalhados e uso podem ser encontrados na página do RSYNC Man.

$ MAN RSYNC

Aproveitar!