Como Usar o Comando Rsync Linux (Sincronização Remota)

O Comando Rsync Linux transfere e sincroniza arquivos ou diretórios de forma eficiente entre uma máquina local, outro host, um shell remoto ou qualquer combinação desses três.

Qualquer um que trabalhe com sistema Linux deve usar esta utilidade poderosa para melhorar sua produtividade. E com a ajuda deste artigo, você vai aprender tudo o que precisa saber para começar a usar.

Sincronizar pastas ou copiar arquivos manualmente pode consumir muito tempo. A utilidade do Rsync pode fazer a maior parte do trabalho adicionando recursos ótimos para economizar tempo.

Mesmo que você perca a conexão durante a transferência, esta ferramenta vai começar exatamente onde parou, assim que a conexão for estabelecida.

Sintaxe Básica

A sintaxe básica para Rsync funciona assim:

rsync [modifcadores opcionais] [SRC] [DEST]

Existem algumas maneiras diferentes de usar o Rsync Linux. Neste exemplo, [modificadores opcionais] indicam as ações a serem tomadas, [SRC] é o diretório de origem e [DEST] é o diretório ou a máquina de destino.

Sintaxe Básica para o Shell Remoto

Quando você usa um shell remoto, como SSH ou RSH, a sintaxe do rsync será levemente diferente.

Para acessar o shell remoto (PULL), use o seguinte comando rsync:

rsync [modificadores opcionais] [USUÁRIO@]HOST:SRC [DEST]

Para acessar o shell remoto (PUSH), use este comando rsync:

rsync [modificadores opcionais] SRC [USUÁRIO@]HOST:[DEST]

Como Verificar a Versão Rsync

Antes de verificarmos o Rsync, precisamos fazer login no servidor VPS que usaremos. Este tutorial mostrará como fazer isso em uma máquina Windows usando o Putty SSH. Se você estiver usando um computador MacOS ou Linux, basta usar o terminal.

O Rsync vem pré-instalado com muitas distribuições Linux. Para verificar se o Rsync está instalado em sua máquina, execute o seguinte comando:

rsync -version

Na nossa distribuição Ubuntu, o comando produzirá a seguinte saída:

rsync  version 3.1.3  protocol version 31

Isto significa que a versão rsync 3.1.3 já está em nossa máquina. Simples, não acha?

Como Instalar o Rsync

Se você não tem Rsync pré-instalado na sua máquina, você pode fazer isso manualmente em apenas um minuto! Em distribuições baseadas em Debian como Ubuntu você poderá usar os seguintes comandos:

apt-get install rsync

Em distribuições baseadas em rpm como Fedora e CentOS, use os seguintes comandos:

yum install rsync

No MacOS, use o seguinte comando:

brew install rsync

É isto! O Linux Rsync está pronto para sincronizar dados, performar transferências de arquivos e deletar arquivos. Você pode verificar se a instalação foi realizada com sucesso usando o comando a seguir:

rsync -version

Como Executar Comandos do Rsync

Para este tutorial, criamos dois diretórios em nosso desktop Linux com os nomes original e duplicate. O diretório original tem 3 arquivos enquanto o duplicado está vazio. Agora vamos ver como o Rsync criará novas maneiras de aumentar a produtividade.

Para criar dois diretórios de teste, use os seguintes comandos:

cd ~
mkdir original
mkdir duplicate
touch original/file{1..3}

Se você quiser checar novamente, use o comando ls para listar todos os arquivos dentro do diretório:

ls original

A saída vai exibir algo parecido com isso:

file1
file2
file3

Se você usar o comando ls com um diretório duplicado, a saída deverá ficar vazia.

Agora que os diretórios estão configurados, vamos dar uma olhada em alguns outros comandos.

O comando a seguir irá copiar ou sincronizar todos os arquivos localizados no diretório original para o diretório duplicado.

rsync original/* duplicate/

* instrui o comando Rsync para sincronizar tudo no diretório original para o duplicado.

Se localizarmos uma nova imagem ou arquivo na pasta original e executar de novo o mesmo comando, somente a nova imagem será copiada para o destino.

Este recurso é bem útil quando você está copiando arquivos de uma rede com limite de largura de banda.

Comandos Mais Comuns do Rsync

Aqui está uma lista dos comandos mais comuns usados com o rsync:

Este habilita o modo de arquivo.

-a, --archive

Este dá a você uma saída visual que mostra o progresso do processo.

-v, --verbose

Já o próximo exibe o output num formato legível para humanos.

-h, --human-readable format

Esse aqui comprime os dados dos arquivos durante a transferência.

-z, --compress

Para finaliza, este copia os dados recursivamente

-r

Como Usar Comandos do Rsync com subdiretórios

Tenha em mente que este comando apenas copia arquivos do diretório principal da pasta Original, mas não dos subdiretórios.

Se você também quer copiar os subdiretórios, use este comando:

rsync -r original/ duplicate/

A opção -r (-recursivo) diz ao Rsync para copiar tudo incluindo os subdiretórios e os arquivos originais da nossa pasta original.

O modificador / usado após o original orienta o rsync a copiar o conteúdo do diretório original para a pasta duplicada.

Como Sincronizar Arquivos

Se você quer sincronizar os arquivos, copie os arquivos que devem estar na pasta de destino – mas não estão no original – para a pasta original, use o seguinte comando:

rsync -r original duplicate/

Com este comando podemos garantir que ambos, original e duplicado, contém os mesmos arquivos.

Como Combinar Comandos Rsync

Outra opção útil é -a (-archive). Significa arquivo e pode servir com muitos outros comandos. Quer dizer que não apenas copia os arquivos, também copia permissões, mudanças de horário e outros dados.

Adicionando a opção -a com o -v, você teria algo similar a isso:

rsync -av --dry-run  Original/ Duplicate/

Não se preocupe, parece um pouco complicado. Vamos resolver isso.

Este comando exibirá somente os arquivos que serão copiados sem nenhuma alteração. Com este comando, você poderá ter uma lista de arquivos que serão copiados.

Se todos os arquivos são os arquivos que você quer copiar, execute o comando without —dry-run.

—dry-run (ou -n) faz com que o Rsync execute um teste que não altera nada.

Outras Opções para Comandos Rsync

O -v que é adicionado ao -a para criar -av no comando aumenta a verbosidade. Aqui está como ele deve ficar:

rsync -av original/ duplicate/

Se você quer sincronizar duas pastas, mas deletar os itens duplicados que não estão presentes na pasta original, adicione -delete, como abaixo:

rsync -av --delete  original/ duplicate/

Você também pode excluir arquivos específicos ou subdiretórios quando está sincronizando duas pastas. Faça isso ao adicionar -exclude=. Se você precisa especificar mais de um arquivo, separe-os por uma vrígula.

rsync -av --exclude=file1,file2  original/ duplicate/

Você também pode incluir arquivos ou subdiretórios quando estiver sincronizando. Faça isso ao adicionar -include=. Você também pode fazer isso com a opção -exclude=. O exemplo abaixo vai incluir arquivos começando com a letra L e excluir outros tipos de arquivos:

rsync -av --include=L* --exclude=*  original/ duplicate/

Usar a opção -z (-compress) vai consolidar os arquivos que estão sendo transferidos através da rede. Como bônus, vamos ver como fazer uma transferência do servidor de origem para outro. O comando será parecido com este:

rsync -za ~/Desktop/Original edward@192.168.22.90:~/tmp/

Como mencionado antes, -z comprimirá os arquivos, -a, ou adicionando a ao -z, vai garantir que todas as permissões sejam copiadas também.

~/Desktop/Original é a origem. É um diretório local – aquele onde sua máquina está logada, e por último edward@192.168.22.90:~/tmp/ indica o destino. edward@192.168.22.90 é o destino que remove o endereço do servidor, enquanto :~/tmp/ direciona para uma pasta específica da máquina.

Como Adicionar uma Barra de Progresso

Em adição aos comandos acima, você pode adicionar -P, o que vai combinar as opções -progress e -partial. Isso vai lhe dar uma barra de progresso para os arquivos que estão sendo transferidos, e também permite que você continue quaisquer transferências que foram interrompidas.

rsync -azP [SRC] [DEST]

A saída vai ser algo parecido com isso:

sending incremental file list
./
file1
         0 100%    0.00kB/s   0:00:00   (xfer#1, to-check=1/3)
file2
         0 100%    0.00kB/s   0:00:00   (xfer#2, to-check=2/3)
file3
         0 100%    0.00kB/s   0:00:00   (xfer#3, to-check=3/3)

Então, se rodarmos o comando novamente, vamos ver uma saída mais curta. Isso acontece porque nenhuma nova mudança foi promovida. A saída será algo parecido com isso:

sending incremental file list
send 26 bytes received 5 bytes 1200.00 bytes/sec
total size is 0 speedup is 0.00

Se você só quer transferir certos arquivos, pode especificar isso com o seguinte comando:

touch original/file{1..5}
rsync -azP [SRC] [DEST]

Isso vai dar uma saída similar à do comando anterior, mas apenas com os arquivos especificados entre os colchetes.

Como Criar um Backup do Rsync

Outro comando importante é criar um backup do Rsync. Faça isso ao combinar -backup com o comando -dir para que você possa especificar onde os arquivos de backup serão armazenados.

rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST]

Resumo

É isso, e nós só mostramos a ponta do iceberg! O Linux Rsync é um utilitário incrivelmente poderoso que todo administrador de servidores ou desenvolvedor Linux precisa conhecer.

Nós apresentamos tudo para você começar, desde a instalação até os comandos básicos. Se você quer conhecer os recursos mais avançados – acesse a documentação oficial!

Prepare-se para melhorar sua produtividade e boa sorte com seu projeto desenvolvido com a Hostinger!

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.