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.
Conteúdo
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!
Comentários
April 11 2021
Ótimo artigo soh faltou falar do rsync --remove-source-files
April 16 2021
Valeu Cid, estamos sempre atualizando nossos artigos e vamos deixar anotada a sua sugestão para quando chegar a vez deste aqui! :D
November 03 2022
supondo que tenho um servidor (a ) dentro dele tenha os usuarios jose, maria, rafa, paulo na pastas /home e queira passar para um outro servidor (B) na pasta /home apenas maria e rafa compactando e descompactando no destino como ficaria isso ?? Obrigado!
November 25 2022
Olá, Magno Alves! Para fazer isso, você precisa usar o comando
rsync -av --exclude=arquivo1,arquivo2 original/ duplicate/
. Aí você troca "arquivo1" e "arquivo 2" pelos arquivos que você não quer que sejam sincronizados ?June 14 2021
Excelente! Mais completo que isso só executando o "$ man rsync" kk Parabéns pelo post!
February 28 2023
gostaria de saber se tem como programar pra fazer backup automático, de um servidor remoto?
March 10 2023
Olá, Alexandre! Tem como programar esse backup automático sim. Você pode usar o WHM (Web Host Manager), o SQL Server, criar um script shell com o Cron ou configurar um servidor de backup com o Amanda ?