Sincronização de arquivos no Linux – 10 formas de usar o Rsync

Sincronização de arquivos no Linux - 10 formas de usar o Rsync

Rsync é o comando utilizado para copiar e sincronizar arquivos e diretórios remotamente, e pode ser utilizado também em sistemas de arquivos local no Linux / Unix / Mac.

Com a ajuda do comando rsync, você pode copiar e sincronizar seus arquivos remotamente e localmente através de diretórios, em discos de  rede, realizar backups de dados e espelhamento entre dois computadores com Linux.

Eu particularmente utilizo muito o Rsync para fazer backups dos arquivos de configurações de servidores, pode ter certeza que ele já me ajudou muito. Estou escrevendo esse artigo pois essa semana o Rsync me salvou mais uma vez.

APRENDA A DOMINAR O LINUX

Aprenda a dominar o LINUX de uma vez por todos, pegue sua cópia

  • Ferramentas para instalar softwares adicionais
  • Shell do LINUX passo a passo, e muito mais...

Eu estava realizando a atualização de uma aplicação feita em java / php e não fiz o backup antes de começar o procedimento de atualização, vários arquivos da atualização estavam com problema.

fazer sincronização de arquivo linux

Resultado: A aplicação parou de funcionar e graças a um backup automatizado feito com o Rsync consegui resolver o problema.

Este artigo explica 10 comandos, do básico e avançado para você sincronizar arquivos com o rsync,  transferir seus arquivos remotamente e localmente em computadores com Linux.

Algumas vantagens e características do comando rsync

  • É eficiente copiar e sincronizar arquivos para ou a partir de um computador remoto.
  • Suporta cópia de links, propriedades de arquivos como usuário, grupos e permissões.
  • É mais rápido do que o scp ( Secure Copy ), porque rsync usa protocolo de atualização remota que permite transferir apenas as diferenças entre dois conjuntos de arquivos. Na primeira vez, ele copia todo o conteúdo de um arquivo ou um diretório de origem para o destino, mas a partir da próxima vez, ele copia apenas os blocos alterados e bytes para o destino.
  • Rsync consome menos banda , uma vez que usa o método de compressão e descompressão durante o envio e recebimento de dados em ambas as extremidades.

A sintaxe básica do comando rsync

# Rsync origem destino opções

Algumas opções do comandos rsync

  1. -V: verbose
  2. -R: cópias de dados de forma recursiva (mas não preservam timestamps e permissão durante a transferência de dados
  3. -A: modo de arquivamento, o modo de arquivo permite a cópia de arquivos de forma recursiva e também preserva links simbólicos, permissões de arquivos, posses usuário e grupo e timestamps
  4. -Z: arquivos serão comprimidos
  5. -H: legíveis, saída em um formato legível para humano (esse é muito bom)

Como instalar o rsync no seu computador com Linux

# yum install rsync (para distribuições baseadas em Red Hat)
# apt-get install rsync (para distribuições baseadas em Debian, o Ubuntu por exemplo)

Não esqueça de ver o nosso Ebook Grátis sobre Ubuntu Linux, o Curso Linux Ubuntu, com ele você vai aprender muitos comando para iniciar no Ubuntu.

1. Como copiar / sincronizar arquivo e diretório em um computador local com Rsync

Este comando irá sincronizar um único arquivo em uma máquina local. Aqui neste exemplo, o arquivo planilha.xls está sendo copiado / sincronizado para o diretório /tmp/backups 

[[email protected]]# rsync -zvh planilha.xls /tmp/backups/
created directory /tmp/backups
planilha.xls
sent 14.71M bytes received 31 bytes 3.27M bytes/sec 

total size is 16.18M speedup is 1.10

No exemplo acima, você pode ver que, se o destino não existe o rsync irá criar um diretório automaticamente.

Leia também ...   9 Programas para gravar CD e DVD no Ubuntu que você deveria conhecer

Copiar / sincronizar um diretório no computador local

O comando abaixo irá transferir ou sincronizar todos os arquivos de um diretório para outro diretório na mesma máquina.

Aqui neste exemplo, /var/apt/apt/archives contém alguns arquivos de pacotes .deb

[[email protected]]# rsync -avzh  /var/apt/apt/archives /tmp/backups/

sending incremental file list

/var/apt/apt/archives
...
sent 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

 

2. Copiar / sincronizar arquivos e diretório com um computador remoto

Este comando irá sincronizar um diretório a partir de uma máquina local para uma máquina remota.

Por exemplo : Existe uma pasta no seu computador local o mesmo do exemplo anterior “/var/apt/apt/archives”, que contém alguns pacotes .deb,  se quiser que o conteúdo desse diretório local seja enviado para um servidor remoto, você pode usar comando a seguir.

[[email protected]]$ rsync -avz /var/apt/apt/archives [email protected]:/tmp/

[email protected]'s password:

sending incremental file list

...
sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec

total size is 4991313  speedup is 1.00

Copiar / sincronizar um diretório remoto para um computador local

Este comando irá ajudá-lo a sincronizar um diretório remoto para um diretório local. Aqui neste exemplo, um diretório:

/home/e-tinet/textos  que está em um servidor remoto está sendo copiado em seu computador local em /tmp/textos.

 

[[email protected]]# rsync -avzh [email protected]:/home/e-tinet/textos /tmp/textos

[email protected]'s password:

receiving incremental file list

created directory /tmp/textos

....
sent 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00

3. Como usar o Rsync rodando com o SSH

Com rsync, podemos usar o SSH ( Secure Shell ) para transferência de dados, usando SSH durante a transferência de nossos dados eles estarão seguros.

Além disso, quando usamos o rsync precisamos informar o usuário / senha, portanto, usando SSH seu login e senha serão enviados de forma criptografada.

Leia também ...   Virtualbox - O que é? Porque Utilizar Para Criar Seu Ambiente de Maquina Virtual?

Copiar um arquivo de um servidor remoto para um servidor local com SSH

Para especificar um protocolo com rsync usamos o parametro ” -e “.  Aqui neste exemplo, iremos utilizar ” ssh .

 

[email protected]]# rsync -avzhe ssh [email protected]:/root/install.log /tmp/

[email protected]'s password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77

Copiar um arquivo de um servidor local para um servidor remoto com SSH

[[email protected]]# rsync -avzhe ssh planilha.xls [email protected]:/backups/

[email protected]'s password:

sending incremental file list

planilha.xls

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

4. Mostrar progresso na transferência de dados com rsync

Para mostrar o progresso durante a transferência de dados de uma máquina para outra máquina, podemos usar  o ‘–progress’.

[[email protected]# rsync -avzhe ssh --progress /home/arquivos [email protected]:/root/arquivos

[email protected]'s password:

sending incremental file list

created directory /root/arquivos
/home/arquivos/texto.txt
           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)
...
sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

5. Usar a opção –include e –exclude

Estas duas opções permite incluir e excluir arquivos de um copias / sincronização.

Aqui neste exemplo, o comando rsync irá incluir arquivos e diretórios apenas que começam com ‘ M ‘ e excluir todos os outros arquivos e diretórios.

OBS.: Excluir da cópia não excluir o arquivo do sistema de arquivos.

[[email protected]]# rsync -avze ssh --include 'm*' --exclude '*' [email protected]:/var/log/ /root/log

[email protected]'s password:

receiving incremental file list

created directory /var/log

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59

6. Uso de opção –delete

Se um arquivo ou pasta não existe na origem, mas já existe no destino, você pode apagar o arquivo / diretório existente.

Podemos usar ‘ —delete‘ para apagar os arquivos que não existem no diretório de origem.

Se a origem e  destino estiver  em sincronia, vamos fazer um teste. Crie um arquivo teste.txt no destino.

[[email protected]]# touch teste.txt
[[email protected]]# rsync -avz --delete [email protected]:/home/pedrod .
receiving file list ... done
deleting teste.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

Uma pequena dica adicional: Tome cuidado com essa opção.

7. Defina o tamanho máximo de arquivos que serão transferidos

Você pode especificar o parâmetro “–max-size” para definir o tamanho máximo do arquivo.

Exemplo: Um arquivo de 200k , então este comando irá transferir apenas os arquivos que são iguais ou menores que 200k .

[[email protected]]# rsync -avzhe ssh --max-size='200k' /var/log/ [email protected]:/root/log

[email protected]'s password:

sending incremental file list

created directory /root/log

...
sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43

8. Apagar automaticamente arquivos da origem após a transferência bem sucedida

Agora, vamos imaginar que você tenha um servidor web principal e um servidor de backup, é feito um backup diário para esse servidor de backup, agora você não quer manter essa cópia local do backup no seu servidor web.

Leia também ...   Servidor VPS Linux - Tudo o que Você Precisa Saber para Iniciar

Então, você vai esperar até que a transferência seja concluída e, em seguida, apagar aqueles arquivos de backup local manualmente?

Claro que não. Esta exclusão automática pode ser feito usando a opção ” –-remove-source-files” .

Seria praticamente um comando “mv”, mas ele pode ser até executado remotamente.

[[email protected]]# rsync --remove-source-files -zvh img.jpg /tmp/backups/

img.jpg

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

9. Usar o parâmetro –dry-run com o Rsync

Se você está aprendendo a trabalhar com rsync e não sabe exatamente um parâmetro ou outro vai fazer, tome muito cuidado pois o Rsync poderá realmente estragar sua pasta de destino, e infelizmente o Ctrl + Z não funciona nesse caso.

Usando esse parâmetro o Rsync não vai fazer nenhuma alteração no destino, apenas vai mostrar o resultado do comando normalmente, assim fica fácil você encontrar algum erro e não correr o risco de fazer uma cópia desastrosa.

[email protected]]# rsync --dry-run --remove-source-files -zvh texto.txt /tmp/backups/

texto.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. Definir Limite de banda de Transferência de Arquivos

Você pode configurar o limite de banda durante a transferência dos arquivos de uma máquina para outra usando o  ‘ —bwlimit’.

[[email protected]]# rsync --bwlimit=100 -avzhe ssh  /var/log/  [email protected]:/root/log/
[email protected]'s password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Então é isso, tem muitas opções o Rsync é uma ferramenta muito utilizada. Hoje eu utilizo muito para fazer backup e sincronização de arquivos, tanto local como remoto.

Existe ainda a opção de configurar o Rsync como um serviço, mas isso é assunto para outro artigo.

Não esqueça de ver o nosso Ebook Grátis sobre Ubuntu Linux, o Curso Linux Ubuntu, com ele você vai aprender muitos comando para iniciar no Ubuntu.

E você? O que achou? Já utilizou o Rsync antes? Deixe um comentário com sua experiência.

Pedro Delfino

Sobre pedrodelfino

Trabalha a mais de 14 anos com administração de sistemas LINUX, dedicado em ensinar novos profissionais a atuar com servidores. Saiba mais aqui. "Caso queira participar de uma aula online comigo utilize o formulário Acima"